循环遍历数组并将单独的对象添加到新数组中-新数组中只有一个项
loop over array and add separate objects to new array - only one item in new array
我正在调用返回JSON响应的后端API。我在这里读了很多答案,包括这个,但他们似乎没有涵盖我的问题。
来自API的JSON响应如下所示:[
{
"id": "1",
"name": "test1",
},
{
"id": "2",
"name": "test2",
}
]
我的Angular JS代码是这样的:
controller.testDetailHolder = [];
Test.getAllTests.query({}, function(data){
for(var i=0; i<data.length;i++){
controller.testDetailHolder.name = data[i].name;
controller.testDetailHolder.id = data[i].id;
}
});
当I console.log
控制器。testDetailHolder它只显示第二个值从GET请求(即数组只持有一个值)然而,我想要的控制器。testDetailHolder看起来像这样:
controller.testDetailHolder = [
{
id: "1",
name: "test1",
},
{
id: "2",
name: "test2",
}
]
如果有任何帮助,我将不胜感激。
谢谢。
controller.testDetailHolder = [];
Test.getAllTests.query({}, function(data){
for(var i=0; i<data.length;i++){
controller.testDetailHolder.push({
name : data[i].hours,
id : data[i].id
});
}
});
您的循环不断覆盖controller.testDetailHolder
,因此您需要使用数组语法:
Test.getAllTests.query({}, function(data){
for(var i=0; i<data.length;i++){
controller.testDetailHolder[i].name = data[i].hours;
^^^
controller.testDetailHolder[i].id = data[i].id;
}
});
您可以这样分配数据:
Test.getAllTests.query({}, function(data){
controller.testDetailHolder = data;
});
或者使用push将其添加到现有数组中:
Test.getAllTests.query({}, function(data){
Array.prototype.push.apply(controller.testDetailHolder, data);
});
controller.testDetailHolder
是数组本身,而不是数组中的元素。您希望将这些值添加为元素,这些元素由controller.testDetailHolder[i]
访问,其中i
是元素的索引。将代码修改为:
controller.testDetailHolder[i].name = data[i].hours;
controller.testDetailHolder[i].id = data[i].id;
问题是您完全覆盖了完整的testDetailHolder
数组,因为您在设置值时没有指定索引。
controller.testDetailHolder.name
应该是controller.testDetailHolder[i].name
另一个问题是,当hours
没有在JSON上定义时,您正在使用data[i].hours
。
最后,因为你想复制整个对象你可以只做一个赋值
Test.getAllTests.query({}, function(data){
controller.testDetailHolder = data;
});
相关文章:
- csv数据中的新数组
- javascript函数,它将数组作为输入,将每个数组元素增加1,并返回增加值的新数组
- 按值名称过滤掉重复的对象,并将其放入新数组中
- 根据对多个数组唯一的元素创建一个新数组
- 使用javascript/jquery从现有数组中创建一个新数组,该数组保存项目存在的次数
- Javascript-在一个数组中搜索整个单词,并创建一个符合条件的新数组
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 将数组值替换为循环以创建新数组
- 带有附加元素的新数组不会可视化
- 创建新数组和清除长度之间的差异
- 如何将新数组传递给函数
- 创建新数组或增加计数器
- 将字符串数组的子字符串复制到Javascript中的新数组中
- 如何使用旧数组中的数据创建新数组
- 如何过滤/修改主干集合本身,而不是获取新数组
- 如何比较具有相同值的两个数组并将该相同值存储在新数组中
- 将现有数组的元素复制到新数组而不使用拼接
- 如何将新数组添加到另一个数组的特定对象中
- 将一个新数组放入另一个数组中
- 为什么它在创建json对象时创建数组新数组