javascript - 在单独的对象中使用reduce进行对象解构

标签 javascript

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

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);

最佳答案

问题是您将所有鞋子放入一个数组 destructedObj 中,当循环重复时该数组不会重置。所以第一个平均值是正确的,但接下来的仍然在计算前面的鞋子。

一种不需要声明所有这些变量的更简单的方法是混合使用 map(),这将使您的新数组与 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}]}
];

let designers = inventory.map(({name,shoes}) => {
  let total = shoes.reduce((total, {price}) => total+price, 0)
  return {
    name,
    average:total/shoes.length
  } 
})

console.log("designers:", designers);

关于javascript - 在单独的对象中使用reduce进行对象解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59042400/

相关文章:

javascript - Ember 链接到模型中的下一个对象

javascript - 单击父项时获取子项数据

javascript - 检查数组值是否包含在字符串中

javascript - Google Maps API JS - 使用两个组合字段放置自动完成

javascript - <script> 元素在 SVG 文件和 HTML 文件中起作用吗?

javascript - CORS 请求与 Safari 一起使用吗?

php - 链接不适用于 jquery

javascript - 如何在不知道对象名称的情况下返回 Json 对象子对象?

javascript - Jquery 表单提交处理程序未被调用

javascript - iOS 中的 Acrobat javascript API