.reduce 中的“[object Object]”消息
'[object Object]' message in .reduce
我正在学习 JS,并试图弄清楚:
[object Object]控制台出现的原因是什么?
const arr = [true,1,'message1','message2']
const arr1 = arr.reduce(
(acc, rec) => ({ ...acc, [`field${acc}${arr.indexOf(rec) + 1}`]: rec}),
{}
)
控制台结果:
[object Object] {
field[object Object]1: true,
field[object Object]2: 1,
field[object Object]3: "message1",
field[object Object]4: "message2"
}
${acc}
在未标记的模板文字中会将 acc
转换为字符串。由于它是一个对象并且(显然)没有自定义 toString
,它将转换为 "[object Object]"
.
我不确定你想在那里做什么,但如果你想通过你在下一个占位符 (${arr.indexOf(rec) + 1}
) 中获得的索引索引到 acc
,不要将它们分开,将它们放在 相同的 占位符中。
这是正确的:
const arr1 = arr.reduce(
(acc, rec) => {return { ...acc, [`field${arr.indexOf(rec) + 1}`]: rec}},
{}
)
此外,您需要知道更好的方法,将添加第三个参数 "index" 来替换 "arr.indexOf(rec)",因此代码将如下所示:
const arr1 = arr.reduce(
(acc, rec, index) => {return { ...acc, [`field${index + 1}`]: rec}},
{}
)
我正在学习 JS,并试图弄清楚: [object Object]控制台出现的原因是什么?
const arr = [true,1,'message1','message2']
const arr1 = arr.reduce(
(acc, rec) => ({ ...acc, [`field${acc}${arr.indexOf(rec) + 1}`]: rec}),
{}
)
控制台结果:
[object Object] {
field[object Object]1: true,
field[object Object]2: 1,
field[object Object]3: "message1",
field[object Object]4: "message2"
}
${acc}
在未标记的模板文字中会将 acc
转换为字符串。由于它是一个对象并且(显然)没有自定义 toString
,它将转换为 "[object Object]"
.
我不确定你想在那里做什么,但如果你想通过你在下一个占位符 (${arr.indexOf(rec) + 1}
) 中获得的索引索引到 acc
,不要将它们分开,将它们放在 相同的 占位符中。
这是正确的:
const arr1 = arr.reduce(
(acc, rec) => {return { ...acc, [`field${arr.indexOf(rec) + 1}`]: rec}},
{}
)
此外,您需要知道更好的方法,将添加第三个参数 "index" 来替换 "arr.indexOf(rec)",因此代码将如下所示:
const arr1 = arr.reduce(
(acc, rec, index) => {return { ...acc, [`field${index + 1}`]: rec}},
{}
)