【发布时间】:2020-11-05 15:47:55
【问题描述】:
我想为name 中的每个名称添加一个带有特定label 的defaultName 到allNameObject 的“数据集”数组中。
相反,我将最后一个循环的“名称”(“Name_5”)作为每个 defaultName 的 label。
我正在为 Chart.js 创建对象,因此无法更改。
我已经阅读了“循环参考”,但我找不到是否是这样或如何解决它。
var allNameObject = { data: { datasets: [] } }
var defaultName = { label: '' }
var names = ["Name_0", "Name_1", "Name_2", "Name_3", "Name_4", "Name_5"]
for (var i = 0; i < names.length; i++) {
allNameObject.data.datasets.push(defaultName)
allNameObject.data.datasets[i].label = names[i]
console.log(allNameObject.data.datasets[i].label)
// this correctly outputs "Name_i"
}
console.log(allNameObject.data.datasets[0].label)
// wanted output: "Name_0" || actual output: "Name_5"
console.log(allNameObject.data.datasets[1].label)
// wanted output: "Name_1" || actual output: "Name_5"
console.log(allNameObject.data.datasets[2].label)
// wanted output: "Name_2" || actual output: "Name_5"
console.log(allNameObject.data.datasets[3].label)
// wanted output: "Name_3" || actual output: "Name_5"
console.log(allNameObject.data.datasets[4].label)
// wanted output: "Name_4" || actual output: "Name_5"
console.log(allNameObject.data.datasets[5].label)
// wanted output: "Name_5" || actual output: "Name_5"
【问题讨论】:
-
您每次都添加相同的对象
defaultName。所以,任何时候你改变它,它都会随处改变。在循环内移动var defaultName = { label: '' }行以创建单独的不同对象。 -
啊啊啊啊!当然!非常感谢@VLAZ!
标签: javascript arrays for-loop object