为什么我的减少累加器复位?

Dan*_*Dan 3 javascript arrays reduce

如何保留我的reduce函数的累积值?每次迭代都会重置对象值.

const a = [1, 2, 3, 4, 5];

const b = {
  1: {
    name: 'Dan',
    age: 25
  },
  2: {
    name: 'Peter',
    age: 28
  },
  3: {
    name: 'Mark',
    age: 38
  },
  4: {
    name: 'Larry',
    age: 32
  },
  5: {
    name: 'Simon',
    age: 25
  },
}

const f = a.reduce((acc, val) => {
  console.log({
    acc
  })
  return {
    [val]: {
      age: b[val].age
    }
  }
}, {})

console.log(f); // 5: {age: 25}
Run Code Online (Sandbox Code Playgroud)

我期望的结果是:

{
  1: { age: 25 },
  2: { age: 28 },
  3: { age: 38 },
  4: { age: 32 },
  5: { age: 25 },
}
Run Code Online (Sandbox Code Playgroud)

(这个例子是演示)

Ori*_*ori 5

使用对象扩展将此前的累加器添加到返回的值(如此示例)或Object.assign():

const a = [1, 2, 3, 4, 5];

const b = {"1":{"name":"Dan","age":25},"2":{"name":"Peter","age":28},"3":{"name":"Mark","age":38},"4":{"name":"Larry","age":32},"5":{"name":"Simon","age":25}};

const f = a.reduce((acc, val) => ({
  ...acc, // previous accumulator
  [val]: {
    age: b[val].age
  }
}), {})

console.log(f); // 5: {age: 25}
Run Code Online (Sandbox Code Playgroud)