繁体   English   中英

如何将对象数组返回数组?

[英]How to return object array into arrays?

我一直在尝试使用map / filter / reduce函数,但我想避免使用for循环。

我想打开对象数组

var foo = [{"z":5, "y":10, "x":15}, {"z":30, "y":40, "x":50}];

变成多维数组。 基本上,最终输出应为[[5,10,15],[30,40,50]],不带对象,只有数组。 我知道如何对单个对象执行此操作:

Object.keys(foo[0]).map(function(key) { 
  return foo[0][key]; 
});

这给了我第一个数组[5,10,15]。 但是我想让它在其余部分进行迭代,所以我知道我需要一个.map函数。 到目前为止,我有:

foo.map(function(bar) {
        var foobar = Object.keys(bar).map(function(key){ 
            return foo[key]; 
        }); 
    return foo; 
});

有人可以解释我做错了什么吗

有一个非常简单的方法可以做到这一点:

var newFoo = foo.map(el=>Object.values(el));

这是现代的ES2017代码。 Object.values获取数组中对象的值。 代码说:“对于foo每个元素,获取对象的值并将它们返回到数组中”。

您可以在2017年前的代码中使用类似以下内容的代码:

var newFoo = foo.map(function(el) {
    var values = [];
    for (var key in el) {
        if (el.hasOwnProperty(key)) {
            values.push(el[key]);
        }
    }
    return values;
});

您有return test; 而是return the Object.keys逻辑

 var foo = [{"z":5, "y":10, "x":15}, {"z":30, "y":40, "x":50}]; var fooArray = foo.map(function(bar) { return Object.keys(bar).map(function(key){ return bar[key]; }); }); console.log(fooArray) 

尝试:

// for each object in the array
foo.map(function(bar) {
    // return an array
    // containing the values of each key in the object
    return Object.keys(bar).map(function(key){ 
        return bar[key]; 
    }); 
});

您的代码很好,只是有两个错误:

  1. 应该在内部地图函数中返回“ bar [key]”而不是“ foo [key]”。
  2. 应该在外部map函数中返回“ foobar”而不是“ foo”。

 foo.map(function(bar) { var foobar = Object.keys(bar).map(function(key){ return bar[key]; }); return foobar; }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM