Javascript 将对象文字推入数组(重复自身..)
我不认为这是一个真正的角度问题,尽管我在使用角度ng repeat指令时偶然发现了这个问题 我试图使用push将javascript对象文本存储到一个数组中,以便在ng repeat中迭代 例如:Javascript 将对象文字推入数组(重复自身..),javascript,angularjs,Javascript,Angularjs,我不认为这是一个真正的角度问题,尽管我在使用角度ng repeat指令时偶然发现了这个问题 我试图使用push将javascript对象文本存储到一个数组中,以便在ng repeat中迭代 例如: $scope.items = []; var item = { name: "bob" }; $scope.items.push(item); item.name = "mary"; $scope.items.push(item); 此时,$scope.items[]包含两个名为Mary的
$scope.items = [];
var item = {
name: "bob"
};
$scope.items.push(item);
item.name = "mary";
$scope.items.push(item);
此时,$scope.items[]包含两个名为Mary的实例,而不是Bob和Mary。这是违反直觉的,因为我认为push应该只是将下一项附加到数组的末尾
我的真实代码(摘要)如下所示:
$scope.items = [];
var item = {
name: "";
};
for (var i = 0; i < 10; i++) {
// I dynamically set the item.name to some value using retrieved values from server
item.name = someValueFromServer;
$scope.items.push(item);
}
$scope.items=[];
变量项={
姓名:”;
};
对于(变量i=0;i<10;i++){
//我使用从服务器检索到的值动态地将item.name设置为某个值
item.name=someValueFromServer;
$scope.items.push(项目);
}
同样,在for循环的末尾,我没有使用10个不同的名称,而是使用与上次检索到的名称相同的10个名称
我不太明白如何解决这个问题,也无法在网上找到任何东西。我是个新手,所以可能是我找错了东西
任何帮助都会很棒。非常感谢 每次都会覆盖相同的对象
for (var i = 0; i < 10; i++) {
var item = {
name: someValueFromServer;
};
$scope.items.push(item);
}
for(变量i=0;i<10;i++){
变量项={
名称:someValueFromServer;
};
$scope.items.push(项目);
}
每次都会覆盖相同的对象
for (var i = 0; i < 10; i++) {
var item = {
name: someValueFromServer;
};
$scope.items.push(item);
}
for(变量i=0;i<10;i++){
变量项={
名称:someValueFromServer;
};
$scope.items.push(项目);
}
每次都会覆盖相同的对象
for (var i = 0; i < 10; i++) {
var item = {
name: someValueFromServer;
};
$scope.items.push(item);
}
for(变量i=0;i<10;i++){
变量项={
名称:someValueFromServer;
};
$scope.items.push(项目);
}
每次都会覆盖相同的对象
for (var i = 0; i < 10; i++) {
var item = {
name: someValueFromServer;
};
$scope.items.push(item);
}
for(变量i=0;i<10;i++){
变量项={
名称:someValueFromServer;
};
$scope.items.push(项目);
}
如前所述,您正在将对象引用推入scope.items,然后更改对象。导致更新其所有引用
以下是一些备选方案:
var scope = {};
scope.items = [];
var arr = [1,2,3,4,5];
//Passing an anonymous object
for( var i = 0, len = arr.length; i < len; i++){
scope.items.push({name: arr[i]});
}
console.log(scope.items); ////[ { name: 1 }, { name: 2 }, { name: 3 }, { name: 4 }, { name: 5 } ]
function Item(value){
this.value = value;
}
//Or with a defined object
scope.items2 = [];
for(var i =0, len =arr.length; i < len; i++){
scope.items2.push(new Item(arr[i]));
}
console.log(scope.items2); //[ { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }, { value: 5 } ]
//Or to declare item inside of the for loop, so that it is reinitialized each time
scope.items3 = [];
for(var i =0, len = arr.length; i < len; i++){
var item = { name: 'somevalue ' + i };
scope.items3.push(item);
}
console.log(scope.items3); /*[ { name: 'somevalue 0' },
{ name: 'somevalue 1' },
{ name: 'somevalue 2' },
{ name: 'somevalue 3' },
{ name: 'somevalue 4' } ]*/
var scope={};
scope.items=[];
var-arr=[1,2,3,4,5];
//传递匿名对象
对于(变量i=0,len=arr.length;i
如前所述,您正在将对象引用推入scope.items,然后更改对象。导致更新其所有引用
以下是一些备选方案:
var scope = {};
scope.items = [];
var arr = [1,2,3,4,5];
//Passing an anonymous object
for( var i = 0, len = arr.length; i < len; i++){
scope.items.push({name: arr[i]});
}
console.log(scope.items); ////[ { name: 1 }, { name: 2 }, { name: 3 }, { name: 4 }, { name: 5 } ]
function Item(value){
this.value = value;
}
//Or with a defined object
scope.items2 = [];
for(var i =0, len =arr.length; i < len; i++){
scope.items2.push(new Item(arr[i]));
}
console.log(scope.items2); //[ { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }, { value: 5 } ]
//Or to declare item inside of the for loop, so that it is reinitialized each time
scope.items3 = [];
for(var i =0, len = arr.length; i < len; i++){
var item = { name: 'somevalue ' + i };
scope.items3.push(item);
}
console.log(scope.items3); /*[ { name: 'somevalue 0' },
{ name: 'somevalue 1' },
{ name: 'somevalue 2' },
{ name: 'somevalue 3' },
{ name: 'somevalue 4' } ]*/
var scope={};
scope.items=[];
var-arr=[1,2,3,4,5];
//传递匿名对象
对于(变量i=0,len=arr.length;i
如前所述,您正在将对象引用推入scope.items,然后更改对象。导致更新其所有引用
以下是一些备选方案:
var scope = {};
scope.items = [];
var arr = [1,2,3,4,5];
//Passing an anonymous object
for( var i = 0, len = arr.length; i < len; i++){
scope.items.push({name: arr[i]});
}
console.log(scope.items); ////[ { name: 1 }, { name: 2 }, { name: 3 }, { name: 4 }, { name: 5 } ]
function Item(value){
this.value = value;
}
//Or with a defined object
scope.items2 = [];
for(var i =0, len =arr.length; i < len; i++){
scope.items2.push(new Item(arr[i]));
}
console.log(scope.items2); //[ { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }, { value: 5 } ]
//Or to declare item inside of the for loop, so that it is reinitialized each time
scope.items3 = [];
for(var i =0, len = arr.length; i < len; i++){
var item = { name: 'somevalue ' + i };
scope.items3.push(item);
}
console.log(scope.items3); /*[ { name: 'somevalue 0' },
{ name: 'somevalue 1' },
{ name: 'somevalue 2' },
{ name: 'somevalue 3' },
{ name: 'somevalue 4' } ]*/
var scope={};
scope.items=[];
var-arr=[1,2,3,4,5];
//传递匿名对象
对于(变量i=0,len=arr.length;i
如前所述,您正在将对象引用推入scope.items,然后更改对象。导致更新其所有引用
以下是一些备选方案:
var scope = {};
scope.items = [];
var arr = [1,2,3,4,5];
//Passing an anonymous object
for( var i = 0, len = arr.length; i < len; i++){
scope.items.push({name: arr[i]});
}
console.log(scope.items); ////[ { name: 1 }, { name: 2 }, { name: 3 }, { name: 4 }, { name: 5 } ]
function Item(value){
this.value = value;
}
//Or with a defined object
scope.items2 = [];
for(var i =0, len =arr.length; i < len; i++){
scope.items2.push(new Item(arr[i]));
}
console.log(scope.items2); //[ { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }, { value: 5 } ]
//Or to declare item inside of the for loop, so that it is reinitialized each time
scope.items3 = [];
for(var i =0, len = arr.length; i < len; i++){
var item = { name: 'somevalue ' + i };
scope.items3.push(item);
}
console.log(scope.items3); /*[ { name: 'somevalue 0' },
{ name: 'somevalue 1' },
{ name: 'somevalue 2' },
{ name: 'somevalue 3' },
{ name: 'somevalue 4' } ]*/
var范围