場景:求一個二維數組中某個key值的和,比如合計價格,數量等
數據格式:[{x: 1}, {x:2}, {x:3}]--------------------->1+2+3=6
方法一: 原生
function sum(arr) {
var len = arr.length;
if(len == 0){
return 0;
} else if (len == 1){
return arr[0];
} else {
return arr[0] + sum(arr.slice(1));
}
}
方法二: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
}
場景:嵌套數組轉一維數組
數據格式:[[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]