Как вычислить значения внутри массива объектов в Javascript? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть массив объектов javascript, и я хочу создать пару ключ: значение, которая является произведением двух значений.

Я могу решить эту проблему, используя гораздо более длинный код вне объекта (т. Е. В цикле «для каждого»), но я подумал, что должен быть более простой способ.Возможно, вы могли бы указать мне правильное направление?

let DB = [
    {
      number: 100,
      factor: 1.5
      product: this.number * this.factor // doesn't work :(
    },
    {
      ...
    }
  ];

Я хочу, чтобы продукт равнялся 150, что составляет 100 * 1,5, но я не знаю, как получить доступ к этим двум значениям.

Ответы [ 3 ]

1 голос
/ 18 июня 2019

вы не можете сделать это внутри массива, но его достаточно легко решить с помощью карты.

[ { number: 100, factor: 1.5}].map(element => ({...element, product: element.number * element.factor}));

.map() проходит через массив и создает новый, каждый элемент которого является результатом функциипередан.

... распространяется, он берет все свойства исходного объекта и помещает их в новый объект, который вы создаете.

0 голосов
/ 18 июня 2019

Если вы хотите выполнить расчет внутри объекта, вы можете попробовать использовать метод получения, как описано здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

x = { 
  number: 100, 
  factor: 1.5, 
  get product() { return this.number * this.factor} 
 }
 
console.log(x.product)
0 голосов
/ 18 июня 2019

или просто: (потому что метод карты создает новый массив, в противном случае используйте метод forEach)

let DB = [ { number: 100, factor: 1.5 }
         , { number: 100, factor: 1.2 }
         ];

for (let db of DB ) { db.product = db.number * db.factor }


/// verify =
for (let db of DB ) console.log( JSON.stringify(db))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...