如何在es6中乘以对象值

时间:2017-09-09 15:54:00

标签: javascript foreach ecmascript-6

好吧所以我有一个变量填充了一个对象,并且该对象具有键值对,现在是代码!

var images = [
  { height: 10, width: 30 },
  { height: 20, width: 90 },
  { height: 54, width: 32 }
];
var areas = [];

//calculate the are of hte image 

images.forEach((image)=>{
    areas.push(images.height.value*images.width.value)
});

我试图运行抛出对象并将值相乘并将它们添加到新区域数组中!

5 个答案:

答案 0 :(得分:4)

您不需要value属性,并且您必须使用您正在迭代的参数,即每次迭代中的image

您可以使用Array.map将值直接返回到新数组,如果要对值进行求和,则使用Array.reduce



var images = [
  { height: 10, width: 30 },
  { height: 20, width: 90 },
  { height: 54, width: 32 }
];

var areas = images.map( img => img.height * img.width);
var total = areas.reduce( (a,b) => (a+b) );

console.log(areas);
console.log(total);




答案 1 :(得分:2)

你可以破坏对象并乘以值。

var images = [{ height: 10, width: 30 }, { height: 20, width: 90 }, { height: 54, width: 32 }],
    areas = images.map(({ height, width }) => height * width);

console.log(areas);

答案 2 :(得分:1)

我建议你使用数组的map函数来完成它:不需要创建一个空数组并在其中推送值。

以下是代码:

const areas = images.map(({ height, width }) => height * width)

那就是它。

在使用对象解构的回调参数中,您可以在此处查找:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

答案 3 :(得分:0)

您的对象中没有value属性,并且您的箭​​头函数中已经有变量image,因此只需将其与属性heightwidth一起使用即可image的。{并且您在箭头函数中不需要大括号:

var images = [
  { height: 10, width: 30 },
  { height: 20, width: 90 },
  { height: 54, width: 32 }
];
var areas = [];

//calculate the area of the image 

images.forEach((image)=>
    areas.push(image.height*image.width)
);
console.log(areas);

答案 4 :(得分:0)

根据兼容性需求,您可以使用不同的方法



var images = [
  { height: 10, width: 30 },
  { height: 20, width: 90 },
  { height: 54, width: 32 }
]

// For new browsers - ES6 support
var areas1 = images.map(({height, width}) => height * width)
console.log(areas1)

// For older browsers - ES5 support
// no destructuring, no arrow functions used
var areas2 = []
images.forEach(function (i) {
  areas2.push(i.height * i.width)
})
console.log(areas2)

// For ancient browsers - ES3 support
// no forEach method
var areas3 = []
for (var i = 0; i < images.length; i++) {
  areas3.push(images[i].height * images[i].width)
}
console.log(areas3)
&#13;
&#13;
&#13;