![](/img/trans.png)
[英]How to return not all of the properties of an object from arrays with an array method?
[英]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];
});
});
您的代码很好,只是有两个错误:
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.