将javascript对象数组转换为数组数组

Lai*_*iso 4 javascript arrays ecmascript-6

我在ES6中寻找一种优雅的方式来转换这个数组:

var src = [{x:1,y:'a'},{x:2,y:'b'}];
Run Code Online (Sandbox Code Playgroud)

到这个数组:

var desc = [[1,2],["a","b"]];
Run Code Online (Sandbox Code Playgroud)

其中包含所有属性的数组和所有值的一个数组.

为此,我写了这段代码:

var src = [{x:1,y:'a'},{x:2,y:'b'}];

var prop1 = [];
var prop2 = [];

src.forEach(item => {
    prop1.push(item.x)
    prop2.push(item.y);
});

var desc = [prop1, prop2];
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它很长,所以我正在寻找最终的改进和短代码.

Yur*_*nko 5

您命名道具顺序(因为不保证对象中键的顺序),然​​后src通过提取相应的道具值来映射数组.

var src = [{x:1,y:'a'},{x:2,y:'b'}]

var props = ['x', 'y'];

var result = props.map(prop => src.map(x => x[prop]))

console.log(result)
Run Code Online (Sandbox Code Playgroud)