在 Javascript 中推送对象
Push object in Javascript
我需要将对象推送到 Javascript 中的数组,但每次推送都会覆盖我已经添加的同一个对象。例如:
//This is object list
var NewIssue = {};
//This is array
var newIssueList = [];
function myFunction() {
for (var i = 0; i < 3; i++) {
NewIssue.Id = i;
NewIssue.Number = 233 + i;
NewIssue.Name = "Test" + i.toString();
newIssueList.push(NewIssue);
}
}
最后我将得到包含 3 个相同对象的 newIssueList。为什么它会覆盖第一个以及如何解决这个问题?
您必须在循环内移动对象。
var newIssueList = [];
function myFunction() {
for (var i = 0; i < 3; i++) {
var NewIssue = {};
NewIssue.Id = i;
NewIssue.Number = 233 + i;
NewIssue.Name = "Test" + i.toString();
newIssueList.push(NewIssue);
}
}
myFunction();
console.log(newIssueList);
然后您可以扩展对象文字 a 但使其更具可读性:
for (var i = 0; i < 3; i++) {
var NewIssue = {
Id:i,
Number:233+i,
Name:"Test"+i
};
newIssueList.push(NewIssue);
}
您还可以通过创建内联对象来避免使用多余的变量:
newIssueList.push({
Id: i,
Number: 233 + i,
Name: "Test" + i.toString()
});
只有一个对象,每次将其推入数组时,都会推入对现有对象的引用。当您更改对象时,数组中的每个元素都会反映这一点,因为它们都指向同一个对象。
您需要在每次迭代时创建一个新对象。
//This is array
var newIssueList = [];
function myFunction() {
for (var i = 0; i < 3; i++) {
newIssueList.push({
id: i,
number: 233 + i,
name: "Test" + i.toString()
});
}
}
myFunction();
console.log(newIssueList);
我需要将对象推送到 Javascript 中的数组,但每次推送都会覆盖我已经添加的同一个对象。例如:
//This is object list
var NewIssue = {};
//This is array
var newIssueList = [];
function myFunction() {
for (var i = 0; i < 3; i++) {
NewIssue.Id = i;
NewIssue.Number = 233 + i;
NewIssue.Name = "Test" + i.toString();
newIssueList.push(NewIssue);
}
}
最后我将得到包含 3 个相同对象的 newIssueList。为什么它会覆盖第一个以及如何解决这个问题?
您必须在循环内移动对象。
var newIssueList = [];
function myFunction() {
for (var i = 0; i < 3; i++) {
var NewIssue = {};
NewIssue.Id = i;
NewIssue.Number = 233 + i;
NewIssue.Name = "Test" + i.toString();
newIssueList.push(NewIssue);
}
}
myFunction();
console.log(newIssueList);
然后您可以扩展对象文字 a 但使其更具可读性:
for (var i = 0; i < 3; i++) {
var NewIssue = {
Id:i,
Number:233+i,
Name:"Test"+i
};
newIssueList.push(NewIssue);
}
您还可以通过创建内联对象来避免使用多余的变量:
newIssueList.push({
Id: i,
Number: 233 + i,
Name: "Test" + i.toString()
});
只有一个对象,每次将其推入数组时,都会推入对现有对象的引用。当您更改对象时,数组中的每个元素都会反映这一点,因为它们都指向同一个对象。
您需要在每次迭代时创建一个新对象。
//This is array
var newIssueList = [];
function myFunction() {
for (var i = 0; i < 3; i++) {
newIssueList.push({
id: i,
number: 233 + i,
name: "Test" + i.toString()
});
}
}
myFunction();
console.log(newIssueList);