1.利用reduce求数组项之和
let arr = [1,3,4,5,6,7,9]
let sum = arr.reduce((prev,curr)=>{
return prev + curr
},0)
console.log(sum)// 35
2. 求数组项最大值
let arr = [1,3,4,5,6,7,9]
let max = arr.reduce((prev,curr)=>{
return Math.max(prev,curr)
})
console.log(max)// 9
3.数组去重
let arr = [1,3,4,5,6,7,9,1,1,1,5,6,7,9]
// 方法一
let newArr = arr.reduce((prev,curr)=>{
prev.indexOf(curr) === -1 && prev.push(curr)
return prev
},[])
console.log(newArr)//[ 1, 3, 4, 5, 6, 7, 9 ]
// 方法二
Array.prototype.unique = function (){
return this.sort().reduce((init, current) =>{
if(init.length === 0 || init[init.length -1] !== current){
init.push(current)
}
return init;
},[])
}
console.log(arr.uniqe()) // [ 1, 3, 4, 5, 6, 7, 9 ]
4.数组项添加新的属性
const cities = [
{ city: '广州市', province: '广东省' },
{ city: '深圳市', province: '广东省' },
{ city: '石家庄市', province: '河北省' },
];
console.log(
cities
.filter(city => city.province === '广东省')
.map(city => Object.assign({}, city, { region: '华南区' }))
);
// [
// { city: '广州市', province: '广东省', region: '华南区' },
// { city: '深圳市', province: '广东省', region: '华南区' }
// ]
console.log(
cities
.reduce((acc, city) => {
return city.province === '广东省'
? acc.concat(Object.assign({}, city, { region: '华南区' }))
: acc;
}, [])
)
// [
// { city: '广州市', province: '广东省', region: '华南区' },
// { city: '深圳市', province: '广东省', region: '华南区' }
// ]