Javascript 如何使用angular获取这些json嵌套值?
我有一个json响应:Javascript 如何使用angular获取这些json嵌套值?,javascript,angularjs,json,Javascript,Angularjs,Json,我有一个json响应: { "tags": [ { "name": "SolarData", "results": [ { "groups": [ { "name": "type", "type": "number" } ], "attributes": {
{
"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]、[14299700000183]、…],以便最终将其用于图形。一般来说,我对angular和web开发都是新手,但到目前为止,我一直是这样尝试的
$http({
url: 'file.json',
method: 'POST',
data: '(query data here)'
}).then(function(data, status){
$scope.solarData = data.tags.results.values;
conosle.log($scope.solarData);
});
var requirementArray=new Array();
对于(i=0;i<$scope.solarData.length;i++){
var pare=新数组();
pare.push($scope.solarData[i][0]);
价格推动($scope.solarData[i][1]);
需求阵列推送(pare);
}
所需费用如下:
[[1429950000000,46],[1429960000000,62],[14299700000183],…]var requirementArray=new Array();
对于(i=0;i<$scope.solarData.length;i++){
var pare=新数组();
pare.push($scope.solarData[i][0]);
价格推动($scope.solarData[i][1]);
需求阵列推送(pare);
}
所需费用如下:
[1429950000000,46],[1429960000000,62],[14299700000183],…]您可以使用:
如果要返回大量项目或数量可变的项目,可以使用
return values.slice(0, 2);
//---------------------^ replace this
var数据={
“标签”:[{
“名称”:“SolarData”,
“结果”:[{
“团体”:[{
“名称”:“类型”,
“类型”:“编号”
}],
“属性”:{
“客户”:[
“极致”
],
“主持人”:[
“服务器1”
]
},
“价值观”:[
[
1429950000000,
46,
3.
],
[
1429960000000,
62,
3.
],
[
1429970000000,
183,
3.
],
[
1429980000000,
156,
3.
],
[
1429990000000,
205,
3.
]
]
}],
“统计数据”:{
“原始计数”:5
}
}]
}
var custom=data.tags[0]。结果[0]。值。映射(函数(值){
返回[值[0],值[1];
});
console.log(自定义)代码>您可以使用:
如果要返回大量项目或数量可变的项目,可以使用
return values.slice(0, 2);
//---------------------^ replace this
var数据={
“标签”:[{
“名称”:“SolarData”,
“结果”:[{
“团体”:[{
“名称”:“类型”,
“类型”:“编号”
}],
“属性”:{
“客户”:[
“极致”
],
“主持人”:[
“服务器1”
]
},
“价值观”:[
[
1429950000000,
46,
3.
],
[
1429960000000,
62,
3.
],
[
1429970000000,
183,
3.
],
[
1429980000000,
156,
3.
],
[
1429990000000,
205,
3.
]
]
}],
“统计数据”:{
“原始计数”:5
}
}]
}
var custom=data.tags[0]。结果[0]。值。映射(函数(值){
返回[值[0],值[1];
});
console.log(自定义)代码>您可以使用:
$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);
});
您可以使用:
$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);
});
干净漂亮。虽然我想知道是否返回[values[0],但是值[1]]
可能会更快。(无论如何,差异可能可以忽略不计)@Cerbrus这是正确的,它会更快,因为它避免了函数调用。尝试了此方法后,我在标记[0]错误处不断得到一个“无法读取未定义的属性“0”。@KrustyCheerio它使用的数据与您发布的数据相同。。。可能您正在获取不同的数据,其中没有标记数组?将其更改为data.data.tags[0]。结果[0]。值。映射。。。。它工作得很好!谢谢你的帮助,很干净。虽然我想知道是否返回[values[0],但是值[1]]
可能会更快。(无论如何,差异可能可以忽略不计)@Cerbrus这是正确的,它会更快,因为它避免了函数调用。尝试了此方法后,我在标记[0]错误处不断得到一个“无法读取未定义的属性“0”。@KrustyCheerio它使用的数据与您发布的数据相同。。。可能您正在获取不同的数据,其中没有标记数组?将其更改为data.data.tags[0]。结果[0]。值。映射。。。。它工作得很好!感谢您的帮助。如果您不使用索引、arr
和状态
参数,为什么要添加这些参数?@Cerbrus为了让示例更清晰,如果他没有阅读有关函数的文档,现在op仍然知道参数存在,那么他不阅读文档怎么知道状态
的含义呢<代码>索引
和arr
更容易解释,但最好链接到文档。@Cerburs我只是从他自己的示例中复制了这一点啊,没有检查它。如果不使用它们,为什么要添加索引、arr
和状态
参数?@Cerburs为了示例的清晰性,如果他没有阅读有关函数的文档,那么现在op仍然知道存在的参数,如果不阅读文档,他怎么知道状态
意味着什么<代码>索引
和arr
更容易解释,但最好链接到文档。@Cerburs我只是从他自己的示例中复制了它啊,没有检查它。