编写一个valueStock函数,该函数将一组产品作为参数。该函数必须返回带有对象的新排列,该对象具有每个产品的名称和库存的总价值。
var products= [{ name: 'TV LCD', price: 100, stock: 50 }, { name: 'pc', price: 500, stock: 50 }, { name: 'Iphone', price: 1000, stock: 10 }]
var valorStock= function(arreglo){
var array=[]
for(var i=0; i<arreglo.length; i++){
array[productos[i]["name"]]=productos[i]["price"]*["stock"]
}
return array
}
console.log(valorStock(productos))
我希望此输出:[{ TV LCD: 5000 }, { Computadora: 25000 }, { Iphone: 10000 }]
答案 0 :(得分:3)
如果您利用Array.prototype.map
和computed property names,则可以在1行中实现此功能:
var products = [{
name: 'TV LCD',
price: 100,
stock: 50
}, {
name: 'pc',
price: 500,
stock: 50
}, {
name: 'Iphone',
price: 1000,
stock: 10
}];
//This is the function you need
const valueStock = arr => arr.map(el => ({[el.name]: el.price * el.stock}));
console.log(valueStock(products));
答案 1 :(得分:1)
您可以先跟踪对象中的产品,然后使用Object.entries
将其转换为数组:
var products = [{
name: 'TV LCD',
price: 100,
stock: 50
}, {
name: 'pc',
price: 500,
stock: 50
}, {
name: 'Iphone',
price: 1000,
stock: 10
}]
var valorStock = function(arreglo) {
var result = {};
arreglo.forEach(({name, price, stock}) => {
result[name] = result[name] || 0;
result[name] += price * stock;
});
return Object.entries(result).map(([k, v]) => ({[k]: v}));
}
console.log(valorStock(products))
如果products
中的每个元素都是唯一的(具有唯一的名称),则也可以使用map
来简单地得到结果:
var products = [{
name: 'TV LCD',
price: 100,
stock: 50
}, {
name: 'pc',
price: 500,
stock: 50
}, {
name: 'Iphone',
price: 1000,
stock: 10
}]
var valorStock = function(arreglo) {
return arreglo.map(({name, price, stock}) => ({[name]: price * stock}))
}
console.log(valorStock(products))
答案 2 :(得分:1)
您可以执行以下操作。
Multibinder<WorkWindow> workWindowBinder = Multibinder.newSetBinder(binder(), WorkWindow.class);
workWindowBinder.addBinding().toProvider(new FinalWorkWindowProvider());