Search code examples
javascriptobjectreducearrow-functions

'[object Object]' message in .reduce


I am learning JS, and trying to figure out: what is reason of appearing in console of [object Object]?

const arr = [true,1,'message1','message2']
const arr1 = arr.reduce(
    (acc, rec) => ({ ...acc, [`field${acc}${arr.indexOf(rec) + 1}`]: rec}),
{}
  )

console result:

[object Object] {
  field[object Object]1: true,
  field[object Object]2: 1,
  field[object Object]3: "message1",
  field[object Object]4: "message2"
}

Solution

  • Here is the right one:

    const arr1 = arr.reduce(
        (acc, rec) => {return { ...acc, [`field${arr.indexOf(rec) + 1}`]: rec}},
    {}
      )
    

    also, you need to know that better way, will be add 3rd argument "index" to replace "arr.indexOf(rec)", so with it code will look:

    const arr1 = arr.reduce(
        (acc, rec, index) => {return { ...acc, [`field${index + 1}`]: rec}},
    {}
      )