我想访问json数组的salesId,但sales也是一个数组,所以循环两次吗?
var json = [
{
'id':1,
'sales':
[
{'salesId':123},
{'salesId':456}
]
},
{
'id':2,
'sales':
[
{'salesId':789},
{'salesId':111213}
]
}
];
答案 0 :(得分:1)
for (var i in json) {
for (var j in json[i].sales) {
var result = json[i].sales[j].salesId; // here "result" will get salesId
}
}
自己看:here
答案 1 :(得分:1)
您不需要循环两次
//loop through the json array that holds objects
for (var i=0; i<json.length; i++) {
var obj = json[i]; //reference to each object
var sales = obj.sales;
sales.forEach(function(element, index) {
console.log(element.salesId);
});
}
答案 2 :(得分:1)
您希望如何输出?
json.map(function(x){ return x.sales.map(function(y){return y.salesId})})
返回每个对象的ID
"[[123,456],[789,111213]]"
答案 3 :(得分:1)
您可以使用内部循环,例如salesId在销售中是动态的。
for(var i=0;i<json.length;i++){
salesItem = json[i].sales;
for(var j=0;j<salesItem.length;j++){
var item = salesItem[j];
console.log(item.salesId);
}
}
答案 4 :(得分:1)
如果你不关心id
,你可以简单地压扁数组:
var newArray = json.reduce(function(p,c,i){
return i>1 ? p.concat(c.sales) : p.sales.concat(c.sales);
});
会给你:
[ // newArray
{'salesId':123},
{'salesId':456},
{'salesId':789},
{'salesId':111213}
]
如果您愿意,也可以使用reduce
仅返回salesId
数组。
答案 5 :(得分:1)
以下是另外两种方式。不建议这些更好,只是&#39;其他&#39;方式。
var json = [
{
'id':1,
'sales':
[
{'salesId':123},
{'salesId':456}
]
},
{
'id':2,
'sales':
[
{'salesId':789},
{'salesId':111213}
]
}
];
单步:
var results = [];
for(i=0;i<json.length;i++){
results.push ( JSON.stringify(json[i].sales).match(/(\d+)/g,function($1){
return $1
}))
};
results; // [["123", "456"], ["789", "111213"]]
另一种方式:
var str;
for(i=0;i<json.length;i++){
str = str + JSON.stringify(json[i].sales);
};
str = str.match(/(\d+)/g,function($1){
return $1
})
str; //["123", "456", "789", "111213"]