编写一个valueStock函数,该函数将一组产品作为参数

时间:2019-06-24 19:28:02

标签: javascript arrays object

编写一个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 }]

3 个答案:

答案 0 :(得分:3)

如果您利用Array.prototype.mapcomputed 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());