美文网首页
数组常见操作汇总:求和 去重 降维

数组常见操作汇总:求和 去重 降维

作者: vivianXIa | 来源:发表于2021-02-04 23:39 被阅读0次

1.数组求和

reduce方法本意就是用来记录循环的累积结果,用于数组求和是最合适不过了。比如我们要求数组 [1,2,3,4] 的元素之和,用forEach你得这样写:

let total = 0;
[1, 2, 3, 4].forEach(item => total += item);
console.log(total); //10

但通过reduce方法就简单的多,我们可以这么写:

let total = [1, 2, 3, 4].reduce((accumulator, current) => accumulator += current); // 10

假设我们希望求数字90与数组 [ 1,2,3,4] 元素的和呢,那就这么写:

let total = [1, 2, 3, 4].reduce((accumulator, current) => accumulator += current, 90); // 100

2.数组去重

比如我们要将数组 [1,2,2,4,null,null] 去除掉重复项,用filter可以这样做:

let arr = [1, 2, 2, 4, null, null].filter((item, index, arr) => arr.indexOf(item) === index); // [1,2,4,null]

当然单说实现使用 new Set 更简单:

let arr = [...new Set([1, 2, 2, 4, null, null])]; // [1,2,4,null]

现在我们知道了reduce方法,其实也可以通过reduce去重,像这样:

let arr = [1, 2, 2, 4, null, null].reduce((accumulator, current) => {
    return accumulator.includes(current) ? accumulator : accumulator.concat(current);
}, []);

3.数组降维

比如我们要将二维数组 [[1,2],[3,4],[5,6]] 降维成一维数组,最简单的做法是通过flat方法,像这样:

let arr = [[1,2],[3,4],[5,6]].flat();//[1, 2, 3, 4, 5, 6]

通过reduce也挺简单,我们可以结合concat方法,像这样:

let arr = [[1,2],[3,4],[5,6]].reduce((accumulator, current)=>accumulator.concat(current),[]);//[1, 2, 3, 4, 5, 6]

那如果是个多维数组呢,reduce可以这样做:

let arr = [0,[1],[2, 3],[4, [5, 6, 7]]];

let dimensionReduction = function (arr) {
    return arr.reduce((accumulator, current) => {
        return accumulator.concat(
            Array.isArray(current) ? 
            dimensionReduction(current) : 
            current
            );
    }, []);
}
dimensionReduction(arr); //[0, 1, 2, 3, 4, 5, 6, 7]

相对而言,多维数组降维flat会更简单,当然flat存在兼容问题:

let arr = [0,[1],[2, 3],[4, [5, 6, 7]]].flat(Infinity);// [0, 1, 2, 3, 4, 5, 6, 7]

相关文章

  • 数组常见操作汇总:求和 去重 降维

    1.数组求和 reduce方法本意就是用来记录循环的累积结果,用于数组求和是最合适不过了。比如我们要求数组 [1,...

  • JS方法数组方法reduce方法常用实例总结

    数组求和 数组项相乘 数组项计数 数组项去重 多维维数组转一维数组 数组对象指定字段求和 示例代码

  • JS 面试之数组的几个不 low 操作

    前言 本文主要从应用来讲数组api的一些骚操作,如一行代码扁平化n维数组、数组去重、求数组最大值、数组求和、排序、...

  • JS 数组的几个炫酷操作

    前言 本文主要从应用来讲数组api的一些骚操作,如一行代码扁平化n维数组、数组去重、求数组最大值、数组求和、排序、...

  • JS 数组 array 几个不low操作

    前言 本文主要从应用来讲数组api的一些骚操作;如一行代码扁平化n维数组、数组去重、求数组最大值、数组求和、排序、...

  • JS面试之数组的几个不low操作

    本文主要从应用来讲数组api的一些骚操作;如一行代码扁平化n维数组、数组去重、求数组最大值、数组求和、排序、对象和...

  • PHP 数组操作

    多维数组的各种操作 1、多维数组排序: 应用例子: 2、数组合并: 3、二维数组去重: 一维数组的各种操作

  • PHP数组降维去重

    工作遇到一个问题,需要给二维数组去重,便想到了array_unique(),然而使用后发现报错,查看手册才明白本函...

  • js数组reduce高级应用

    计算数组中每个元素出现的次数 数组去重 将二维数组转化为一维 将多维数组转化为一维 对象里的属性求和 原文链接: ...

  • 数组去重求和

    今天,一个同学去面试,发回来题目让我帮忙看看,题目如下: 这个题目与简单去重有点不大一样,一看挺简单,但是容易掉坑...

网友评论

      本文标题:数组常见操作汇总:求和 去重 降维

      本文链接:https://www.haomeiwen.com/subject/kmzptltx.html