当前位置:首页 > 杂文阅读 > reduce用法(reduce用法详解,JavaScript中数组高阶函数的神器)

reduce用法(reduce用法详解,JavaScript中数组高阶函数的神器)

来源:良璐杂文网

reduce()是JavaScript中一种强大的数组高阶函数,它可用于归纳(折叠)数组中的所有元素到一个单独的值。reduce()方法在前端开发中应用广泛,其功能强大,可用于数组转换、求和、筛选、调整结构等众多场合。

reduce()方法的基本语法如下:

array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

它接受两个参数,第一个参数是回调函数,第二个参数是累加器初始值(可选)。回调函数接受四个参数:输出累加器的结果;当前元素的值;当前元素的索引(可选)和数组本身(可选)。

下面举例说明reduce()的一些用途。首先,reduce()实现数组求和可以这样写:

let arr = [1, 2, 3, 4, 5];let sum = arr.reduce((accumulator, currentValue) => accumulator   currentValue);console.log(sum); // 15

reduce()方法也可以实现对数组元素进行分组:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];let groups = arr.reduce((accumulator, currentValue) => {   if (currentValue % 2 === 0) {    accumulator.evens.push(currentValue);  } else {    accumulator.odds.push(currentValue);  }  return accumulator;}, { evens: [], odds: [] });console.log(groups); // { evens: [2, 4, 6, 8, 10], odds: [1, 3, 5, 7, 9] }

此外,reduce()方法还可以用来将一组具有父子关系的数据转换为树形结构:

let data = [  { id: 1, name: '中国' },  { id: 2, name: '北京', parentId: 1 },  { id: 3, name: '上海', parentId: 1 },  { id: 4, name: '海淀区', parentId: 2 },  { id: 5, name: '朝阳区', parentId: 2 },  { id: 6, name: '浦东区', parentId: 3 },  { id: 7, name: '徐汇区', parentId: 3 }];function buildTree(data, id = null) {  return data.filter(item => item.parentId === id)    .map(item => ({      id: item.id,      name: item.name,      children: buildTree(data, item.id)    }));}let tree = buildTree(data);console.log(tree);

以上是reduce()在前端开发中多方面地应用,相信使用过的朋友都会觉得它是一个很有用的工具。

信息搜索
最新信息