首页 > 解决方案 > 在单独的对象中使用 reduce 进行对象解构

问题描述

我遇到了一个问题。我知道这看起来有点乱,但它向你展示了我的思想是如何运作的。所以问题是退出解构循环。第一个平均值是正确的,但第二个继续平均值。这个程序效率不高,但我想知道我做错了什么。任何帮助都会很棒。

const inventory = [
  {name: 'Brunello Cucinelli',shoes: [{name: 'tasselled black low-top lace-up', price: 1000},{name: 'tasselled green low-top lace-up', price: 1100},{name: 'plain beige suede moccasin', price: 950},{name: 'plain olive suede moccasin', price: 1050}]},
  {name: 'Gucci',shoes: [{name: 'red leather laced sneakers', price: 800},{name: 'black leather laced sneakers', price: 900}]}
];
var avgPriceArr = []; var target = []; var intermediateArr = [];var obj = {}; var destructuredObj = []; var intermediateObj = [];

for (var { name: designerName, shoes } of inventory) {

	for (var { price } of shoes) {
		
		destructuredObj.push(price);
		avgPriceArr =destructuredObj.reduce((accum, currVal) => accum + currVal) /destructuredObj.length;
	}
	

	var innerObj = {
		name: designerName,
		averagePrice: avgPriceArr
	};

	target.push(innerObj);

	var outterObj = {
		designers: target
	};
}
console.log(outterObj);

标签: javascript

解决方案


首先,尝试将您的所有内容替换varconstlet可能有助于解释差异。
其次,将您的 for 循环替换为forEach函数以获得更好的性能和可读性。

这些可能会解决您的问题。
祝你好运!


推荐阅读