1.reduce()
这个reduce方法的第一个参数为匿名函数(这个匿名函数的pre参数为上一次遍历的值,cur参数为本次遍历的值),第二个参数可传可不传,若传递了第二个参数,那么就表示pre的初始值。
//求数组价格的最大值
let arr = [
{id: 1, name: '华为', price: 6000},
{id: 2, name: '小米', price: 5888},
{id: 3, name: 'oppo', price: 2544},
{id: 4, name: '苹果', price: 16000}];
function getMaxMoney(arr) {
return arr.reduce(function (pre, cur) {
return pre.price > cur.price ? pre : cur
})
}
console.log(getMaxMoney(arr)); //{id: 4, name: "苹果", price: 16000}
//求数组价格总和
let arr = [
{id: 1, name: '华为', price: 6000},
{id: 2, name: '小米', price: 5888},
{id: 3, name: 'oppo', price: 2544},
{id: 4, name: '苹果', price: 16000}];
function getTotalMoney(arr) {
return arr.reduce(function (total, cur) {
return total += cur["price"]
}, 0)
}
console.log(getTotalMoney(arr)); //30432
//求价格大于6000的商品名称
let arr = [
{id: 1, name: '华为', price: 6899},
{id: 2, name: '小米', price: 5888},
{id: 3, name: 'oppo', price: 2544},
{id: 4, name: '苹果', price: 16000}];
function getTotalName(goods, price) {
return goods.reduce(function (arr, cur) {
if (cur.price > price) {
arr.push(cur)
}
return arr;
}, []).map(item => item.name)
}
console.log(getTotalName(arr, 6000)); //["华为", "苹果"]