JSON obj到javascript中的动态多维数组

时间:2018-02-01 03:26:00

标签: javascript php arrays json multidimensional-array

我有一个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数据库返回什么,因此必须动态创建数组。 请告诉我们如何做到这一点。

2 个答案:

答案 0 :(得分:4)

✨ES2017的Object.values()

如果支持不是问题,那就不能简洁了!

const object = { A: [1,2,3], B: [4,5,6], C: [7,8,9] };

console.log(Object.values(object));

ES5 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]));

ES5 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 docsObject.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 ] ]