我有一个JSON obj:
{ 'A' : [1,2,3], 'B': [4,5,6], 'C': [7,8,9] }
我需要创建多个javascript数组来存储
[1,2,3], [4,5,6], [7,8,9]
分开。 JSON obj可以有很多这样的因素,因为它取决于从SQL数据库返回什么,因此必须动态创建数组。 请告诉我们如何做到这一点。
答案 0 :(得分:4)
Object.values()
如果支持不是问题,那就不能简洁了!
const object = { A: [1,2,3], B: [4,5,6], C: [7,8,9] };
console.log(Object.values(object));
Object.keys()
如果您需要更好的浏览器支持,我会将Object.keys()
与Array.prototype.map()
一起使用(如果您更改正常功能的arrow function,则使用ES5; const
使用var
{1}}):
const object = { A: [1,2,3], B: [4,5,6], C: [7,8,9] };
console.log(Object.keys(object).map(key => object[key]));
for...in
否则,ES5的另一种方法可能是使用for...in
。写得更久,但可能更快(?)
var object = { A: [1,2,3], B: [4,5,6], C: [7,8,9] };
var listOfLists = [];
for (const key in object)
if (object.hasOwnProperty(key))
listOfLists.push(object[key]);
console.log(listOfLists);
Object.keys()
VS for...in
如上所述in the docs,Object.keys()
和for...in
之间的区别在于前者不会考虑原型链中的属性(因此您不需要object.hasOwnProperty(key)
检查)。
Object.keys()
方法返回给定对象自己的可枚举属性的数组,其顺序与for...in
循环提供的顺序相同(不同之处在于for-in循环枚举了原型链也是如此。
答案 1 :(得分:1)
我希望这就是你想要的:
let obj = { 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] };
let result = Object.getOwnPropertyNames(obj).reduce(function(result, property) {
result.push(obj[property]);
return result;
}, []);
console.log(result);//[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]