簡體   English   中英

將對象數組的每個元素乘以標量

[英]Multiply each element of an array of an object by a scalar

我有一個對象數組,每個對象也包含一些數組。

我想知道如何輕松訪問這些值,例如將它們乘以一個常數。

可能需要forEach() ,我試圖這樣做:

 myArray = [{ income: [1, 2, 3], outcome: [2, 3] }, { income: [1, 9, 8, 5], outcome: [1, 3, 7] }, { income: [7, 2, 8], outcome: [2, 6, 10] }, ]; const myValue = 2; myArray.forEach(ob => ob.income = ob.income * myValue, ob.outcome = ob.outcome * myValue); 

在這種情況下,預期結果應為:

myArray = [
  {income: [2, 4, 6], outcome: [4, 6]},
  {income: [2, 18, 16, 10], outcome: [2, 6, 14]},
  {income: [14, 4, 16], outcome: [4, 12, 20]},
];

您可以簡單地使用forEach()遍歷所有對象,然后使用Array.map()獲得所需的結果。

 let myArray = [ {income: [1, 2, 3], outcome: [2, 3]}, {income: [1, 9, 8, 5], outcome: [1, 3, 7]}, {income: [7, 2, 8], outcome: [2, 6, 10]}, ]; const multiplyBy = 2; myArray.forEach((obj)=>{ obj.income = obj.income.map((a)=> a*multiplyBy); obj.outcome = obj.outcome.map((a)=> a*multiplyBy); }); console.log(myArray); 

您可以采用所有屬性並為新對象映射新屬性。

 var array = [{ income: [1, 2, 3], outcome: [2, 3] }, { income: [1, 9, 8, 5], outcome: [1, 3, 7] }, { income: [7, 2, 8], outcome: [2, 6, 10] }], factor = 2, result = array.map(o => Object.assign(...Object.entries(o).map(([k, v]) => ({ [k]: v.map(f => f * factor) })))); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

突變原始數組

 var array = [{ income: [1, 2, 3], outcome: [2, 3] }, { income: [1, 9, 8, 5], outcome: [1, 3, 7] }, { income: [7, 2, 8], outcome: [2, 6, 10] }], factor = 2; array.forEach(o => Object .entries(o) .forEach(([k, v]) => o[k] = v.map(f => f * factor)) ); console.log(array); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM