好吧所以我有一个变量填充了一个对象,并且该对象具有键值对,现在是代码!
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)
});
我试图运行抛出对象并将值相乘并将它们添加到新区域数组中!
答案 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
,因此只需将其与属性height
和width
一起使用即可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;