使用lodash
库,我希望能够将多个值插入到多维数组中,如下所示:
var arr = [{ a: 2, b: 3, c: 4 }, { a: 1, b: 4, c: 2 }];
_.pluck(arr, ['a', 'c'])
-->
[[2, 4], [1, 2]]
这可能吗?
感谢。
答案 0 :(得分:4)
多个键没有弹出,但你可以这样做:
<击> 撞击>
<击>_.map(['a', 'c'], function(path) {
return _.pluck(arr, path);
});
这将返回按键分组的值。
击><击> 撞击>
_.mpluck = function(collection, paths) {
return _.zip(
_.map(paths, function(path) {
return _.pluck(collection, path);
})
);
}
var arr = [{ a: 2, b: 3, c: 4 }, { a: 1, b: 4, c: 2 }];
_.mpluck(arr, ['a', 'c']) --> [[2, 4], [1, 2]]
这将用指定键的数组替换每个对象。
function mpluck(collection, paths) {
return collection.map(function(obj) {
return paths.map(function(path) {
return obj[path];
});
});
}
答案 1 :(得分:1)
没有lodash的解决方案:
function pluck(arr, k) {
return arr.reduce(function (r, a) {
r.push(k.reduce(function (rr, aa) {
rr.push(a[aa]);
return rr;
}, []));
return r;
}, []);
}
var arr = [{ a: 2, b: 3, c: 4 }, { a: 1, b: 4, c: 2 }],
x = pluck(arr, ['a', 'c']);
document.write('<pre>' + JSON.stringify(x, 0, 4) + '</pre>');