首先我们先定义个数组然后再去写不同的方法。
let arr = [{
userName: "jack",
password: "112",
score: 10
}, {
userName: "jack",
password: "112",
score: 12
}, {
password: "158",
userName: "rose",
score: 15
}];
1.map方法
它是会改变原数组里面元素的值,并且它return回一个新的数组。
let newArr = arr.map((item, index, currArr) => {
// 通过item修改值会直接影响到元素组
item.password = '10086';
if (index == 1) {
currArr[index].userName = '读书'
}
// 当无return返回值,newArr每项值都为undefined
return `${item.password},${item.userName}`
})
console.log(newArr); // ['10086,jack', '10086,读书', '10086,rose']
2.forEach方法
它是会改变原数组里面元素的值,但是它返回的是undefined。
let newArr = arr.forEach((item, index, currArr) => {
// foreach也可以改变元素之中的值,但是他会返回的是undefined
item.password = '110'
return item.password
})
console.log(newArr); //undefined
console.log(arr);
// {userName: 'jack', password: '110', score: 10}
// {userName: 'jack', password: '110', score: 12}
// {userName: 'rose', password: '110', score: 15}
3.filter方法
返回值是一个新的数组
let newArr = arr.filter((item, index, currArr) => {
if (item.password.indexOf("2") != -1) {
return item
}
})
console.log(newArr);//[{…}, {…}]
4.reduce方法:对数组中的每个元素执行一个自定义的累计器,将其结果汇总为单个返回值。
array.reduce((t, v, i, a) => {}, initValue)
t: 累计器完成计算的返回值
v: 当前元素
i:当前元素的索引
a:当前元素所属的数组对象
initValue:第一个累计的数
let newArr = arr.reduce((t, v) => {
return v.score + t
}, 0)
console.log(newArr);//37