例如,我有一个像这样的JSON:
"result": [
{
"Id": 45,
"data": {
"sM": 1667,
"Data": [
{
"date": "2016-02-10",
"value": 96.0
},
{
"date": "2016-02-11",
"value": 81.0
},
{
"date": "2016-02-12",
"value": 19.0
},
{
"date": "2016-02-13",
"value": 72.0
},
},
"Id": 74,
"data": {
"sNe": 1434,
"Data": [
{
"date": "2016-02-10",
"value": 59.0
},
{
"date": "2016-02-11",
"value": 18.0
},
{
"date": "2016-02-12",
"value": 3.0
}
]
我希望以[[96,81,19,72],[59,18,3]]等数组形式返回“值”,我该怎么做?
我尝试做类似
的事情 var dashboardDate= data.result;
for (var i=0; i < dashboardData.length; i++){
mentionArr.push(dashboardData[i].data.mentionData);
}
但是,这个返回的日期并没有完成这项工作。 我厌倦了使用indexOf()方法。 indexOf(“value”)也是如此,但似乎不起作用。
答案 0 :(得分:1)
你需要2级嵌套循环。首先是result
上的循环,然后在每个结果对象的Data
上循环。像这样:
data = JSON.parse('{"result":[{"Id":45,"data":{"sM":1667,"Data":[{"date":"2016-02-10","value":96.0},{"date":"2016-02-11","value":81.0},{"date":"2016-02-12","value":19.0},{"date":"2016-02-13","value":72.0}]}},{"Id":74,"data":{"sNe":1434,"Data":[{"date":"2016-02-10","value":59.0},{"date":"2016-02-11","value":18.0},{"date":"2016-02-12","value":3.0}]}}]}');
var dashboardData= data.result;
var newArr = Array();
// loop against result array
for (var i=0; i < dashboardData.length; i++){
var a = Array();
// loop against the Data array on each object in result
for (var x=0; x < dashboardData[i].data.Data.length; x++) {
a.push(dashboardData[i].data.Data[x].value);
}
newArr.push(a);
}
这将输出:
JSON.stringify(newArr);
// outputs:
[[96,81,19,72],[59,18,3]]
答案 1 :(得分:0)
你给这个JSON,是错误。
权利是
“结果”:[ { “Id”:45, “数据”:{ “sM”:1667, “数据”:[ { “日期”:“2016-02-10”, “价值”:96.0 }, { “日期”:“2016-02-11”, “价值”:81.0 }, { “日期”:“2016-02-12”, “价值”:19.0 }, { “日期”:“2016-02-13”, “价值”:72.0 } ] } }, {
"Id": 74,
"data": {
"sNe": 1434,
"Data": [
{
"date": "2016-02-10",
"value": 59.0
},
{
"date": "2016-02-11",
"value": 18.0
},
{
"date": "2016-02-12",
"value": 3.0
}
]
}
}
然后遍历
for (var i=0; i < dashboardDate.length; i++){
dashboardDate[i].data.Data.forEach(function(item){
mentionArr.push(item.value)
})
的console.log(mentionArr);