2016-06-14 37 views
1

在这样如何将json转换为没有键的angularjs中的数组?

var data = [ 
    {"field1":"918666400041","field2":"2016-05-19 11:52:52"}, 
    {"field1":"918666400035","field2":"2016-05-19 11:52:52"}, 
    {"field1":"918666400060","field2":"2016-05-19 11:52:52"} 
]; 

但我需要转换成阵列格式了键,如我的代码返回JSON格式:

var Data = [ 
    ['918666400041', '2016-05-19 11:52:52'], 
    ['918666400035', '2016-05-19 11:52:52'], 
    ['918666400035', '2016-05-19 11:52:52'] 
]; 

任何一个可以将给予这个问题的解决方案?

我已经尝试过angular.forEach函数和map函数,但我没有得到这种格式。

+0

背后是什么忽略对象的字段名的想法?如果你想让JSON像这样,那么你不应该为了对象本身。你期望的是数组的简单数组。 – NightsWatch

回答

0

你可以尝试reduce功能:

var Data = data.reduce(function(previousValue, currentValue) { 
    previousValue.push([currentValue.field1, currentValue.field2]) 
    return previousValue; 
}, []); 
1

var obj = [ {"field1":"918666400041","field2":"2016-05-19 11:52:52"}, {"field1":"918666400035","field2":"2016-05-19 11:52:52"}, {"field1":"918666400060","field2":"2016-05-19 11:52:52"} ]; 
 

 
var res = obj.map(function(val) { 
 
    return [val.field1, val.field2] 
 
}) 
 

 
console.log(res)

+0

感谢asdf_enel_hak现在工作正常 – Ram

2

根据您打算support浏览器,你可以只使用ES5 map功能:

var mappedData = data.map(function(obj) { 
    return [obj.field1, obj.field2]; 
}); 

如果您没有访问ES5阵列的方法,你可以使用角度的的forEach如下:

var mappedData = []; 
angular.forEach(data, function(obj) { 
    mappedData.push([obj.field1, obj.field2]); 
}); 
+0

感谢net.uk.sweet工作正常 – Ram

+0

没有probs @Ram。你能将答案标记为正确吗? –

0

可以使这样的:

var l_IN = <your starting JSON> ; 

var I_OUT = [] ; 

for (x = 0 ; x < l_IN.length ; x++) { 

    dummy = {l_IN.field1,l_IN.field2} ; 

    l_OUT.push(dummy) ; 

// or l_OUT.push(l_IN.field1,l_IN.field2) ; 
} 

.... 
0

试试这个

var data = [ 
{"field1":"918666400041","field2":"2016-05-19 11:52:52"}, 
{"field1":"918666400035","field2":"2016-05-19 11:52:52"}, 
{"field1":"918666400060","field2":"2016-05-19 11:52:52"} 
]; 

var x =[]; 

angular.forEach(data,function(val,index){ 
x.push(val.field1) 
x.push(val.field2) 
}) 

现在x你会得到所需的阵列

0

你可以使用这样的事情:

var data = [ {"field1":"918666400041","field2":"2016-05-19 11:52:52"},{"field1":"918666400035","field2":"2016-05-19 11:52:52"}, {"field1":"918666400060","field2":"2016-05-19 11:52:52"} ], 
    newData = []; 

// Iterating through the data array, to process object by object 
for (var i = data.length - 1, tempArray; i >= 0; i--) { 
    // returning a new object with only the current object value for each key 
    tempArray = Object.keys(data[i]).map(function(k) { return data[i][k] }); 
    newData.push(tempArray); 
} 

console.log(newData); 

这是非常类似(但稍微复杂一点这里)比Converting JSON Object into Javascript array