我在Angular中使用反应形式,我从输入字段中获取数据。但是在我将数据推送到某个变量之前,我必须进行一些处理。
//here data contains all the form data submitted using the form
let data = this.someForm.value;
其中一个输入字段值包含逗号分隔值,如下所示:"45,756,879,345"
。我使用','
将其拆分为一个值数组,并将其转换为整数。
//Get all numbers in an array
let arr = data['c'].split(',').map(function(item) {
return parseInt(item);
});
现在我循环遍历每个arr值并将其推送到名为xyz的变量。这里,xyz是我在模型中定义的一些自定义类型。
[
{
a: 'some data',
b: 'some more data'
c: 4
},
{
a: 'some data',
b: 'some more data'
c: 4
},
{
a: 'some data',
b: 'some more data'
c: 4
},... 10 more objects
]
[
{
a: 'some data',
b: 'some more data'
c: 3
},
{
a: 'some data',
b: 'some more data'
c: 46
},
{
a: 'some data',
b: 'some more data'
c: 21
},... 10 more objects
]
//here I am trying to push same data for 'a' and 'b' but dynamic data for temp['c'].
for(let i = 0; i < arr.length; i++){
temp['a'] = 'some data';
temp['b'] = 'some more data';
temp['c'] = arr[i];
this.xyz.push(temp);
}
如果我在arr中有10个数字。然后我在xyz中得到10个对象数组 当我打印xyz。我看到所有xyz对象都包含相同的temp ['c']值,这是arr包含的最后一个值。
答案 0 :(得分:2)
您可能反复使用相同的参考。
for(let i = 0; i < arr.length; i++){
var temp = {};
temp['a'] = 'some data';
temp['b'] = 'some more data';
temp['c'] = arr[i];
this.xyz.push(temp);
}
如果您在for循环之前定义了temp
,则只需反复编辑相同的temp
,将其推送到this.xyz
数组中。
如果您甚至不想要temp
变量:
for(let i = 0; i < arr.length; i++){
this.xyz.push({
a: 'some data',
b: 'some more data',
c: arr[i]
});
}