使用indexOf()以JSON格式返回数组

时间:2016-03-10 03:11:32

标签: javascript jquery json for-loop

例如,我有一个像这样的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”)也是如此,但似乎不起作用。

2 个答案:

答案 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);