【问题标题】:JSON obj to dynamic multi dimensional arrays in javascriptJSON obj到javascript中的动态多维数组
【发布时间】:2018-07-11 07:29:33
【问题描述】:

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

【问题讨论】:

  • 你的预期输出是什么?
  • 我认为他想要的预期输出应该是一个双数组。
  • @Dean,好吧,我的意思是输出是三个数组还是一个数组? [1,2,3], [4,5,6], [7,8,9] 或 [[1,2,3], [4,5,6], [7,8,9]]
  • @xianshenglu the arrays has to be created dynamically他说的
  • @ravikumar 如果您确切知道多维数组中有多少子数组,那么您可以使用destructuring assignmentconst [one, two, three] = [[1,2,3], [4,5,6], [7,8,9]];

标签: javascript php arrays json multidimensional-array


【解决方案1】:

✨ 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()(ES5 如果您将arrow function 更改为正常功能,将const 更改为var):

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 docs 所说,Object.keys()for...in 之间的区别在于前者不会考虑原型链中的属性(因此您不需要object.hasOwnProperty(key) 检查)。

Object.keys() 方法返回给定对象自己的可枚举属性的数组,其顺序与 for...in 循环提供的顺序相同(不同之处在于 for-in 循环也枚举原型链中的属性)。

【讨论】:

  • 这很有效,但是有没有办法让我说 arr['A'] 并且输出是 [1,2,3],arr['B'] 并且输出是[4,5,6] 等类似键值对?
  • @ravikumar 您可以只使用您最初拥有的对象。在我的任何示例中,它都只是object.Aobject['A'],你会得到[1, 2, 3]。如果你有一个 JSON string 表示它而不是一个实际的 Object,你可以通过这样做来转换它:const object = JSON.parse('{ "A" : [1,2,3], "B": [4,5,6], "C": [7,8,9] }')
【解决方案2】:

我希望这是你想要的:

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 ] ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多