2017-04-25 121 views
1

是否有angularJs任何可能的方式来此数组对象的转换:对象数组的转换阵列Angularjs

[{"tickets":1,"month":"june","year":2016},{"tickets":2,"month":"june","year":2015},{"tickets":3,"month":"december","year":2015}] 

像这样的数组:

[['tickets', 'month','year'], [1, "june",2016],[3, "june",2015],[1, "december",2015]] 

回答

-1

当然,它的纯JavaScript可以处理

var array1 = [{"tickets":1,"month":"june","year":2016}, 
 
    {"tickets":2,"month":"june","year":2015}, 
 
    {"tickets":3,"month":"december","year":2015}]; 
 

 
    var array2 = [['tickets', 'month','year']]; 
 

 
array1.forEach(function(item){ 
 
    array2.push([item.tickets, item.month, item.year]); 
 
}) 
 
    
 
console.log(array2);

UPDATE

更灵活的方式,通过JK_Jha

var array1 = [{"tickets":1,"month":"june","year":2016}, 
 
     {"tickets":2,"month":"june","year":2015}, 
 
     {"tickets":3,"month":"december","year":2015}]; 
 

 
var array2 = [Object.keys(array1[0])]; 
 

 
array1.forEach(function(item){ 
 
    array2.push([item.tickets, item.month, item.year]); 
 
}) 
 

 
console.log(array2);

+0

为什么youu硬编码这样:var数组2 = [ '门票', '月', '年']; – undefined

+0

因为,我相信'array2'的第一个数组将作为某种表格或其他东西的标题 – Leguest

+1

您可以刚完成Object.keys(array1 [0])。这更好 – undefined

1

办法劝使用Array#reduce()Array#concat()不依赖于知道任何的属性名称或硬的编码结果阵列结构

let data = [{"tickets":1,"month":"june","year":2016},{"tickets":2,"month":"june","year":2015},{"tickets":3,"month":"december","year":2015}]; 
 

 
let res = data.reduce((acc, curr) => { 
 
    return acc.concat([acc[0].map((key) => curr[key])]); 
 
}, [Object.keys(data[0])]); 
 

 
console.log(res)