Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS/ES6:对象到数组的转换_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript JS/ES6:对象到数组的转换

Javascript JS/ES6:对象到数组的转换,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我的一个node js库正在以错误的格式返回我需要的一些数据,如下所示: {"a":["1","2"],"b":["3","4"],"c":["5","6"]} [{"a":"1", "b":"3", "c":"5"}, {"a":"2", "b":"4", "c":"6"}] (请注意,这些值并不重要) 但是我需要以某种方式循环这个数组,我发现我的B代表我的a,它有一个特定的值(在这种情况下,例如“2”,我需要“4”),到目前为止,我的程序的所有其他部分都在使用这样的数组: {"a":["

我的一个node js库正在以错误的格式返回我需要的一些数据,如下所示:

{"a":["1","2"],"b":["3","4"],"c":["5","6"]}
[{"a":"1", "b":"3", "c":"5"}, {"a":"2", "b":"4", "c":"6"}]
(请注意,这些值并不重要) 但是我需要以某种方式循环这个数组,我发现我的B代表我的a,它有一个特定的值(在这种情况下,例如“2”,我需要“4”),到目前为止,我的程序的所有其他部分都在使用这样的数组:

{"a":["1","2"],"b":["3","4"],"c":["5","6"]}
[{"a":"1", "b":"3", "c":"5"}, {"a":"2", "b":"4", "c":"6"}]
这将是我的首选方法

还要注意,a中的数据量始终与b和c相同,但其本身是可变的


那么,在ES6/JS中实现这一点的“最佳”方法是什么(在我开始处理for循环之前)?

如果您希望转换类似于

{"a":["1","2"],"b":["3","4"],"c":["5","6"]}
像这样排列成一个数组

[{"a":"1","b":"3","c":"5"},{"a":"2","b":"4","c":"6"}]
这是我能想到的最简单的方法

function formatData (data) {
  return Object.keys(data).reduce((arr, key) => {
    data[key].forEach((value, i) => {
     const iObj = arr[i] || (arr[i] = {});
     iObj[key] = value;
    });
    return arr;
  }, []);
}

“将是“最好的”方式”。。。如果这个问题阻碍了您的进度,那么我强烈建议您阅读以下内容:使用此处显示的数组的示例有一个错误,特别是“Uncaught SyntaxError:Unexpected token”。你打算把它变成一个数组吗?我觉得这是你的一个关键问题。实际上for循环是个不错的主意。如果你愿意,你可以得到…@TravisJ是的,它是作为数组使用的。我只是打了个例子。还有,我知道为什么要用“最好的”这个说法?第一:这个特定的代码会经常被调用,所以优化它会很好。第二:如果我们只是想“哦,这足够好了”-我们就不会像现在这样在技术或其他方面:)你的问题是
{{a:“1”,“b:“3”,“c:“5”,“a:“2”,“b:“4”,“c:“6”}
我假设你是
[{a:“1”,“b:“3”,“c:“5”},{a:“2”,“b:“4”,“c:”6”}
,因为第一个是无效的,你是对的。我现在就更新这个。同样非常感谢您的快速响应,这非常有效。不会
for in
for(让i=0;i@Bergi在
中不使用
for,因为它不会提供索引,而
的基本
将添加更多的样板文件。但是我同意可以使用
reduce