场景:求一个二维数组中某个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"}]*/