我有json数组名称,如newarr。如何从json数组中获取所有id以及如何在arr值中添加?
var arr=new Array();
var newarr=new Array([
{
"id": 16820,
"value": "abcd",
"info": "Centre"
},
{
"id": 18920,
"value": "abcd-16820",
"info": "Centre"
},
{
"id": 1744,
"value": "abcd-16820",
"info": "Centre"
},
{
"id": 16822,
"value": "AaronsburgPA-16820",
"info": "Centre"
}
]);
答案 0 :(得分:2)
这应该这样做:
for (var o in newarr){
arr.push(newarr[o].id);
}
另外,在构建数组对象时,您不需要同时使用方括号和new Array
,其中一个将执行:
var myarray = new Array(1,2,3);
或
var myarray = [1,2,3];
答案 1 :(得分:1)
我用jQuery尝试了这个,这里是fiddle。
$.each(newarr[0], function(k, v) {
arr.push(v.id);
});
console.log(arr);
答案 2 :(得分:0)
这很简单:
for(prop in newArr) {
arr.push(newArr[prop].id);
}
请允许我建议您不要直接向Stack Overflow寻求帮助,而是下次谷歌。 :)此外,这不是一个JSON数组:它是一个Javascript数组。最好使用[]
表示法(var arr = []
)初始化数组。
答案 3 :(得分:0)
两个给定的答案都不起作用,因为您正在创建嵌套数组(newarr=new Array([...])
)。
算法是:遍历包含对象的Array,并push
将每个object.id的值arr
传递给for (var i=0;i<newarr[0].length;i+=1){
if (newarr[0][i].id) {
arr.push(newarr[0][i].id);
}
。
在你的情况下:
{{1}}
此外:这不是'JSON数组'。 There are no such things as JSON Objects/Arrays
答案 4 :(得分:0)
您可以在数组上使用map
方法:
arr = newarr.map(function(obj) { return obj.id })
指向文档的链接:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map
如果您在每个对象中都没有id,则可能需要filter
null:
arr = newarr.map(function(obj) {
return obj.id
}).filter(function(id){
return id !== undefined
})
文档:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter
如果您确实有嵌套数组,请先执行此操作:
newarr = newarr[0]
这是指向jsfiddle
的链接