作为前端人,咱们常常以数组的办法获取某种数据列表,并且需求将其转换为其他办法。在JavaScript中内置在全部数组中有一种非常强前端和后端的差异健的办法是运用reduc数组c言语e函数。最早提出是在EC前端和后端哪个薪酬高MASc阅读器前史记载删了怎样找回ript 5.1 ,阅读器前史上的痕迹在哪里本年4月份ECMAScript 2022 中有所定制其运用规范。javascript九九乘法表下面我将介绍它的根柢语法和我在运用reduce函数中实践同享包括:

  1. 核算前端开发数组中全部值的总和/最值
  2. 数组去重
  3. 将二维数组转化为一维前端开发需求把握什么技能
  4. 核算数组中每个元素呈现的次数
  5. 过滤和映射大数据集,功用更佳的实践

语法

arr.re大数据修仙duce(callback(阅读器accumulator, currentValue[, in阅读器拜访过于再三不能用dex[, a大数据技能rray]])[, initialValue])

reducer 函数接收4个参数:Accumulator (acc)数组去重 (累计器)、Current Value (cur)数组函数的使用办法 (当时元素的值)、Curr前端开发需求把握什么技能ent大数据技能与使用 I前端开发需求学什么ndex (idx阅读器) (当时索引)、Source Array (src) (源数组,也就是正在遍历的政策)。

回调函数第一次执行时,acc大数据技能与运大数据专业工作远景怎样umulator 和cur大数据与管帐rent前端开发需求把握什么技能Value的取值有两种大数据杀熟情况:假定调用reduce()时供给了initialValue,accumulator取值为initialValue,currentValue取数组中的第一个值;假定没有供给 initialValue,那么accumulator取数组中的第一个值前端练习组数组初始化,currentValue取数阅读器组中前端开发需求把握什么技能阅读器拜访过于再三不能用第二个值阅读器

这儿要留意的是:

假定数组为空且没有供给ini阅读器下载tialValue,会抛前端开发需求学什么出TypeError 。假定数组仅有一个元素(不管方位怎样)并且没有供给阅读器前史上的痕迹在哪里initi前端和后端哪个工资高alValue, 或许有供给initialValue但javascript是数组为空,那么此仅有值将被回来阅读器怎样检查前史阅读记载并且callback前端开发需求把握什么技能不会被执行

R大数据杀熟educe不会直接改动它所调用的政策,可是该政策能够通过前端结构调用call阅读器前史上的痕迹在哪里back前端和后端哪个薪酬高fn前端面试题来改动。

假定阅读器拜访过于再三不能用你有喜爱深入研究,更多相关材料能够移步到官方规范文档
它在各大前端开发阅读器的兼容性如图~
JavaScript数组reduce()函数的5个运用场景共享

或许上面的介绍比较单调,接下来咱们就进行实践同享吧!

一、核算数组中全部值的总和,或许最值

// 处理总大数据杀熟和的累计前端开发需求学什么
conjavascript九九乘法表st delTotal = (acc, it数组词em) => {
return acc + item;
}javascript数据类型;
// 处理最最大值的累计器
const delMax = (acc, item) => {
r阅读器的前史记载在哪eturn (acc > item) ? acc : item
};
con大数JavaScript据杀熟st dJavaScriptata = [1, 2, 3];
const tot阅读器怎样检查前史阅读记载al = data.reduce(delTotal);
const max = data阅读器的前史.reduce(delMax);
console.log阅读器前史记载设置("The sum is: ", total)javascript面试题; //The sum is: 6
conso阅读器前史上的痕迹在哪里le.log("The max is: ", max); //The max is: 3
console.log(数组公式"dat前端开发需求把握什么技能a: ", data数组的界说); //data:  [1, 2, 3]

政策数组的操jajavascript数据类型vascript:void(0)作也是如此,留意假定要处理政策数组,那政策数组中包括的值有必要JavaScript供给初始值,以便各个item前端阅读器怎样检查前史阅读记载和后端的差异正确通过你的函数前端开发需求学什么~

二、数组去重

const numberArray = [1,3,4,5,数组词4,5,3,4数组排序]
const stringArra阅读器怎样翻开网站y = [阅读器前史记载删javascript数据类型了怎样找回'a', 'b', 'a', 'b', 'c', 'e', 'e']
consjavascript九九乘法表t delRepetit阅读器前史记载设置javascript九九乘法表ion = (accumul阅读器拜访过于再三不能用ator, currentValue)=&大数据是什么意思gt; {
if (accumulator.ind前端开发需求把握什么技能exOf(curren数组数组去重去重tValue) === -1) {
accumu阅读器拜访过于再三不能用lator.数组c言语push(currentValue)
}
return accumulator
}
const repNumberArray = numberArray.reduce(delRepetition,[])
const repStringAr阅读器前史记载设置ray = stringArray.阅读器reduce(delRepe大数据t前端工程师ition,[])
console.log(大数据专业工作远景怎前端和后端的差异"The rep阅读器的阅读前史怎样删去NumberArray is: ", repNumberArray); //The repNumberArray isjavascript九九乘法表: [1, 3, 4, 5]
console.log("The repStringAjavascript菜鸟教程rray is: ", repStringArray); /数组词/The repStringArray is: ["a", "b前端面试题", "阅读器下载c", "数组c言语e"]

数组javascript菜鸟教程去重的办法许多,这种或大数据技能与运用专业许不是最大数据技能与使用专业佳的,可是也前端和后端哪个工资高是一种思路。 假定你正在运用一个能够兼容SetArray.f阅读器前史记载删了怎样找回rom() 的环境, 你能够运用let orderedArray = Arr大数据杀熟ay.from(new Set(myArray))大数据; 来获得阅读器前史记载设置一个去重的数组~大数据技能

三、将二维数组转化为一维

const flattened = [[0, 1], [2, 3], [4, 5]].reduce(
( acc, cur ) =&gt阅读器的前史; acc.concat(cur),
[]
);阅读器
console.log("flattened: ", flattened); //flattened: [0, 1, 2, 3, 4, 5]

趁便应战:怎样运用arr数组初始化ay.reduce()办法把多维数组转化为一维数组?能够不才面的议论中写下您的解前端开发决计划~

阅读器的阅读前史怎样删去、核算数组中每大数据专业工作远景怎样数组的界说前端素呈现的次数阅读器

核算呈现次数这个场景,大数据技能与使用专业也很常见,比方投票核算,下面模仿一个前端结构运用投票核算


co阅读器前史记载设置nst initialValue = {};
const reducer = (tally, vote) => {
i数组f (!t阅读器aljavascript什么意思ly[vote]) {
tally[vote] = 1;
} else {
tally[vote]前端学什么端开发需肄业什么 = tally[阅读器下载vote] + 1;
}
return tally;
};
const votes = [数组函数的运用办法
"vue",
"数组去重react",
"ang数组词ular大数据",
"vue",
"react",
"a数组ngular",
"vue",
"react阅读器怎样翻开网站",
"vue"
];
consjavascript数据类型t result = votes.reduce(reducer, initialValue);
console.log("Result: ", result)  // Result:  {vujavascripte: 4, r阅读器前数组c言语史记载设置eact: 3, angular: 2}
console.log前端学什么("Vue: ", result.vue) // Vue大数据与管帐:  4
console.lo大数据查询g("React: ", result.前端面试题react) // React:  3

类似的,也能够处理javascript什么意思按特javascript面试题色对前端学什么object分类

五、javascript过滤和映射大数据集数组去重,功javascript数据类型用更佳

咱们都知道过滤数组,JavaScript供给了一种对数组政策进行过滤的filter()办法,下面咱们举个比方,对一个数组javascript大数据数组(100万个数据大数据与管帐)中筛选出全部偶数项,来对比javascript面试题功用

constJavaScript bigData = [];
for (var i = 0; i &l阅读器怎样翻开网站t; 1000000; i++) {
bigData[i] = i;
}
const filterB前端开发需肄业什么egin = Date大数据杀熟.n前端开发需求把握什么技能ow()
var filterMappedBigData = bigData.filter((valu大数据技能与使用专业e)=&阅读器前史上的痕迹在哪里gt; {阅读器的前史记载在哪
return value % 2 === 0;
})
const filterEnd = Date.now()
const filterjavascript九九乘法大数据timeSpent = (filterEnd数组c言语-filterBegin)/1000 + "s";
const reducedBegin=Date.now(前端开发);
var reduced大数据专业工作远景怎样BigData = bigData.reduce((acc, value)=> {
if (value % 2 === 0) {
acc.push(value);
}
r阅读器前史记载设置前端工程师eturn acc;
}, []);
const reducedEnd = Date.now()前端和后端哪个薪酬高javascript;
const re数组初始化ducedtimeSpent = (reducedE大数据杀熟nd-reducedBegin)/1000 + " s";
console.前端结构log("filtered Big Data:", filter前端面试题timeSpent)
console.log("reduced Big Data:", reducejavascript高档程序设计dtimeSpent)

在控制台中,咱们能够看到filtejavascript菜鸟教程r()花了25毫秒,reduced阅读器()javascript面试题了20毫秒,或许你在本地环境测,数据有差异,可是reduced()在耗时少,当然感喜爱的同学,也能够也拿大数据专业学什么map()javascript什么意思实验,你会发现在处理大数据,reduced()在耗时上都比他们少!

fijavascript什么意思ltered Big Data: 0.025 s
r阅读器的前史educed Big Data: 0.020 sjavascript数据类型

假定你对过滤的数据在别离进行操作的话,耗时这块表现大数据专业工作远景怎样的更显着。假定咱们前端和后端哪个薪酬高要处理许多数据信息,那么前端学什么了解reduce()函数能够将全部这些操作吞并在一起,然后极大地阅读器下载阅读器的前史记载在哪行进功用,这将非常有协助~

最终

本文从语法到实践同享了一些我在实践开发中reduce()函数运用的阅读器技巧,数组的界说期望有点抛砖引玉的作用,前端工程师当然它还有许多可javascript高档程序设计以结合运用的场景,比方编写前端工程师函数,检阅读器阅读器的阅读前史怎样删去怎样翻开网站查嵌套政策等等~,也数组去重等候议论区你的同享~