遍历 JS 中的对象数组

Raf*_*ira 0 javascript typescript

我有以下对象:

obj = [
    { 1: 20, 2: 26, 3: 14},
    { 1: 12, 2: 25, 3: 15},
    { 1: 14, 2: 13, 3: 19},
    { 1: 16, 2: 32, 3: 21}
]
Run Code Online (Sandbox Code Playgroud)

我想将每个位置乘以 2,然后将它们添加到每个位置,让我解释一下:我将每个值乘以 2,这是部分结果:

obj = [
    { 1: 40, 2: 52, 3: 28},
    { 1: 24, 2: 50, 3: 30},
    { 1: 28, 2: 26, 3: 38},
    { 1: 32, 2: 72, 3: 42}
]
Run Code Online (Sandbox Code Playgroud)

然后我必须添加每个键并通过在初始对象内的末尾添加一个新数组来添加总数,这应该是最终结果:

obj = [
    { 1: 20, 2: 26, 3: 14},
    { 1: 12, 2: 25, 3: 15},
    { 1: 14, 2: 13, 3: 19},
    { 1: 16, 2: 32, 3: 21},
    { 1: 104, 2: 200, 3: 138}
]
Run Code Online (Sandbox Code Playgroud)

kap*_*dey 5

  • 使用 map 迭代每个数组对象(行)。
  • 然后对于该行中的每个键,使用 reduce 将其乘以 2,最后返回该行(包含 2 乘法的结果)
  • 在将每行乘以 2 的同时,我们还计算每行的 key*2 的总和。
  • 将 sumRow 推送到原始对象

let obj = [
  { 1: 20, 2: 26, 3: 14},
  { 1: 12, 2: 25, 3: 15},
  { 1: 14, 2: 13, 3: 19},
  { 1: 16, 2: 32, 3: 21}
]
let sumRow = {}
let partialRes = obj.map(row => Object.keys(row).reduce((acc, key) => {
  acc[key] = row[key] * 2
  sumRow[key] = sumRow[key] ? sumRow[key] + acc[key] : acc[key]
  return acc
}, {}))

obj.push(sumRow)
console.log(obj)
Run Code Online (Sandbox Code Playgroud)