遍历对象并修改值:如何将所有产品价格降低20%?
实现产品价格批量降低20%的方法
针对你的需求,有两种简单易懂的方式可以实现,都是遍历对象里的每个产品然后修改价格:
方法一:使用for...in循环
这是遍历对象属性最基础的方式,适合新手理解:
const products = { product1: { name: 'Pasta', price: 25, quanity: 5, }, product2: { name: 'Pizza', price: 20, quanity: 3, }, product3: { name: 'Cola', price: 8, quanity: 4, }, }; // 遍历products对象的每个键(product1、product2、product3) for (const key in products) { // 拿到当前产品对象 const product = products[key]; // 价格降低20%,也就是乘以0.8 product.price *= 0.8; } // 验证修改结果 console.log(products);
解释:for...in会逐个取出对象的键名,通过products[key]就能拿到对应的产品对象,然后直接修改它的price属性——降低20%等价于保留80%,所以用*= 0.8来简化计算。
方法二:使用Object.keys() + forEach
这是更现代的写法,用数组遍历的方式处理对象键:
const products = { product1: { name: 'Pasta', price: 25, quanity: 5, }, product2: { name: 'Pizza', price: 20, quanity: 3, }, product3: { name: 'Cola', price: 8, quanity: 4, }, }; // 获取products的所有键,组成数组 Object.keys(products).forEach(key => { const product = products[key]; product.price = product.price * 0.8; }); console.log(products);
解释:Object.keys(products)会返回一个包含所有产品键名的数组(比如['product1', 'product2', 'product3']),然后用forEach遍历这个数组,每个循环里处理对应的产品价格。
注意点
- 虽然
products是用const声明的,但这不影响修改对象内部的属性——const只是限制了不能给products重新赋值,对象本身的内容是可以修改的。 - 如果需要保留原对象,不想直接修改它,可以先复制每个产品对象再修改,不过新手阶段先掌握直接修改的方式就够了。
内容的提问来源于stack exchange,提问作者potion
相关产品推荐
相关产品推荐

