如何使用angular获取这些json嵌套值?

时间:2016-04-25 06:10:38

标签: javascript angularjs json

我有这个json回复:

 {
  "tags": [
    {
      "name": "SolarData",
      "results": [
        {
          "groups": [
            {
              "name": "type",
              "type": "number"
            }
          ],
          "attributes": {
            "customer": [
              "Acme"
            ],
            "host": [
              "server1"
            ]
          },
          "values": [
            [
              1429950000000,
              46,
              3
            ],
            [
              1429960000000,
              62,
              3
            ],
            [
              1429970000000,
              183,
              3
            ],
            [
              1429980000000,
              156,
              3
            ],
            [
              1429990000000,
              205,
              3
            ]
          ]
        }
      ],
      "stats": {
        "rawCount": 5
      }
    }
  ]
}

我希望只能获得该项目的每个值部分的前两项。敌人的例子我想在范围变量中返回[[1429950000000,46],[1429960000000,62],[1429970000000,183],.....],所以我最终可以将它用于图形。我是角色和网络开发人员的新手,但这是我迄今为止尝试过的方式。

$http({
           url: 'file.json',
           method: 'POST',    
           data: '(query data here)'
         }).then(function(data, status){
            $scope.solarData = data.tags.results.values;
            conosle.log($scope.solarData);
        });

3 个答案:

答案 0 :(得分:2)

您可以使用map

var custom = data.tags[0].results[0].values.map(function(values) {
  return [values[0], values[1]];
});

如果您想要返回大量项目或可变数量的项目,可以使用slice

return values.slice(0, 2);
//---------------------^ replace this



var data = {
  "tags": [{
    "name": "SolarData",
    "results": [{
      "groups": [{
        "name": "type",
        "type": "number"
      }],
      "attributes": {
        "customer": [
          "Acme"
        ],
        "host": [
          "server1"
        ]
      },
      "values": [
        [
          1429950000000,
          46,
          3
        ],
        [
          1429960000000,
          62,
          3
        ],
        [
          1429970000000,
          183,
          3
        ],
        [
          1429980000000,
          156,
          3
        ],
        [
          1429990000000,
          205,
          3
        ]
      ]
    }],
    "stats": {
      "rawCount": 5
    }
  }]
}

var custom = data.tags[0].results[0].values.map(function(values) {
  return [values[0], values[1]];
});
console.log(custom);




答案 1 :(得分:0)

var requirementArray = new Array();
for (i = 0; i < $scope.solarData.length ; i++) {
    var pare = new Array();
    pare.push($scope.solarData[i][0]);
    pare.push($scope.solarData[i][1]);

    requirementArray.push(pare);
}

requirementArray将是:

[[1429950000000,46],[1429960000000,62],[1429970000000,183],...]

答案 2 :(得分:0)

您可以使用Array.map

$http({
   url: 'file.json',
   method: 'POST',    
   data: '(query data here)'
 }).then(function(data, status){
    $scope.solarData = data.tags[0].results[0].values.map(
        function(curVal, index, arr) {
            return [curVal[0], curVal[1]];
        }
    );

    conosle.log($scope.solarData);
});