作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试使用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;
});
关于javascript - 如何将对象数组返回到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42078970/
我是一名优秀的程序员,十分优秀!