总结下工作中常用的数据处理操作

场景:求一个二维数组中某个key值的和,比如合计价格,数量等

数据格式[{x: 1}, {x:2}, {x:3}]--------------------->1+2+3=6 或者 [1,2,3,4]---------->10
方法一: eval

var arr = [ 1, 2, 3, 4 ]
function sum(arr) {
    
    
    return eval(arr.join("+"));
};
//sum(arr)

方法二:reduce()

    test() {
    
    
      var valeurInitiale = 10; //初始值
      let arr = [{
    
     price: 1 }, {
    
     price: 20 }, {
    
     price: 22 }, {
    
     price: 30 }];
      let sum = arr.reduce(
        (accumulateur, valeurCourante) => accumulateur + valeurCourante.price,
        valeurInitiale
      );
      console.log(sum); //85
    }

方法三:map()

//map方法
let arr = [{
    
     price: 1 }, {
    
     price: 20 }, {
    
     price: 22 }, {
    
     price: 30 }];
var sum = 0;
arr.map(item=>{
    
    
    sum+=item.price
})
console.log(sum); //73

场景:嵌套数组转一维数组

数据格式[[0, 1], [2, 3], [4, 5]]------------------>[0,1,2,3,4,5]

方法一:flat()

console.log([1 ,[2, 3]].flat()); // [1, 2, 3]
// 指定转换的嵌套层数
console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]]
// 不管嵌套多少层
console.log([1, [2, [3, [4, 5]]]].flat(Infinity)); // [1, 2, 3, 4, 5]

方法二:reduce()

var applati = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
    
    
    return a.concat(b);
});
console.log(applati) //[0,1,2,3,4,5]

场景:数组比对,筛选出相同,或者不同的部分

数据格式
[{ id: 1, sex: 'a' }, { id: 3, sex: 'b' }, { id: 5, sex: 'ab' }][{ selcId: 1 }, { selcId: 3 }] 筛选出[{id: 1, sex: "a"},{id: 3, sex: "b"}]

let arr = [{
    
     id: 1, sex: 'a' }, {
    
     id: 3, sex: 'b' }, {
    
     id: 5, sex: 'ab' }],
    brr = [{
    
     selcId: 1 }, {
    
     selcId: 3 }]
let filterArr = arr.filter(item => brr.some(e => e.selcId === item.id))
console.log(filterArr)	/*[{id: 1, sex: "a"},{id: 3, sex: "b"}]*/

猜你喜欢

转载自blog.csdn.net/qq_42816550/article/details/106842990