Напишите функцию valueStock, которая принимает массив продуктов в качестве параметра - PullRequest
2 голосов
/ 24 июня 2019

Напишите функцию 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 ]

3 голосов
/ 24 июня 2019

Функция может быть выполнена в 1 строку, если вы используете Array.prototype.map и имена вычисляемых свойств :

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 голос
/ 24 июня 2019

Вы можете сделать что-то вроде этого.

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, p; p = arreglo[i]; i++) {
    var obj = {};
    obj[p.name] = p.price * p.stock;
    array.push(obj);

  }
  return array
}

// or better
var valorStock1 = function(arreglo) {
  return arreglo.map(p => {
    var obj = {};
    obj[p.name] = p.price * p.stock;
    return obj;
  });
}

console.log(valorStock(products));
console.log(valorStock1(products));
1 голос
/ 24 июня 2019

Вы можете сначала отслеживать продукты в объекте, а затем преобразовать его в массив, используя 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...