关于数组的一些基础知识可以看这一篇文章:链接: JS数组的基操总结.
获取购物车商品的总价格
// 定义商品信息为元素的数组
let cart = [{
name: 'clothes',
price: 430
}, {
name: 'phone',
price: 3599
}, {
name: 'books',
price: 36
}, {
name: 'foods',
price: 220
}, {
name: 'hp',
price: 6499
}, {
name: 'earphone',
price: 499
}];
// reduce方法其实可以看做是一个累加的函数
// 首先给total总价赋初始值为0,value为数组的第一个元素
// total每次都会加上商品的价格,然后作为返回值继续变成下一次total的值。
let totalPrice = cart.reduce((total, value) => {
total += value.price;
return total
}, 0);
console.log(totalPrice);
商品的最高销量
let phoneList = [
{
phone: 'huawei',
sales: 4595
}, {
phone: 'xiaomi',
sales: 5624
}, {
phone: 'oppo',
sales: 4512
}, {
phone: 'vivo',
sales: 6613
}, {
phone: 'meizu',
sales: 3546
}, {
phone: 'oneplus',
sales: 3395
}, {
phone: 'honour',
sales: 4157
}, {
phone: 'redmi',
sales: 6524
}];
function maxSales(phoneArr) {
return phoneArr.reduce((pre, value) => {
// 如果pre的销量大于value的销量,则返回pre,否则返回value
// 返回的值会成为下一次的pre,而value也会跳到下一个元素
// 依次比较,类似于冒泡排序的第一轮排序过程。
return pre.sales > value.sales ? pre : value;
})
};
console.log(maxSales(phoneList));
获取销量超过***的商品
let phoneList = [{
phone: 'huawei',
sales: 4595
}, {
phone: 'xiaomi',
sales: 5624
}, {
phone: 'oppo',
sales: 4512
}, {
phone: 'vivo',
sales: 6613
}, {
phone: 'meizu',
sales: 3546
}, {
phone: 'oneplus',
sales: 3395
}, {
phone: 'honour',
sales: 4157
}, {
phone: 'redmi',
sales: 6524
}];
function getphones(arr, num) {
return arr.filter((value) => {
return value.sales > num;
});
}
console.log(getphones(phoneList, 5000));
也可以返回单独返回商品名称或者销量:
function getphones(arr, num) {
return arr.filter((value) => {
return value.sales > num;
}).map((item) => {
return item.phone
});
};
function getphones(arr, num) {
return arr.filter((value) => {
return value.sales > num;
}).map((item) => {
return item.sales;
});
};
去重购物车的商品
let cart = [{
name: 'clothes',
price: 430
}, {
name: 'clothes',
price: 430
}, {
name: 'clothes',
price: 430
}, {
name: 'phone',
price: 3599
}, {
name: 'books',
price: 36
}, {
name: 'books',
price: 36
}, {
name: 'foods',
price: 220
}, {
name: 'hp',
price: 6499
}, {
name: 'hp',
price: 6499
}, {
name: 'earphone',
price: 499
}];
function NoRepeat(array){
return array.reduce((arr, value) => {
let goods = arr.find((item) =>
item.name == value.name);
if(!goods) arr.push(value)
return arr;
}, [])
}
console.log(NoRepeat(cart));
filter去重的方法
let array = ['phone', 'clothes', 'foods',
'phone', 'books', 'foods', 'computer', 'computer'];
let newArr = array.filter((value, index) => {
return array.indexOf(value) === index;
})
console.log(newArr);
map去重的方法
let array = ['phone', 'clothes', 'foods', 'phone',
'books', 'foods', 'computer', 'computer'];
let newArr = [];
function NoRepeat(array){
array.map((item,index) => {
if (newArr.indexOf(item) === -1) newArr.push(item);
});
return newArr;
}
console.log(NoRepeat(array));