关于数组的运用场景

这篇博客探讨了在购物车场景中如何利用数组方法,包括计算商品总价格、找出最高销量的商品、筛选销量超特定值的商品以及实现去重功能,详细介绍了filter和map方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


关于数组的一些基础知识可以看这一篇文章:链接: 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));

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值