Select 只有一部分来自 JavaScript 中的数组对象

Select only some part from array objects in JavaScript

我有一个对象数组,我想得到一个新数组,其中的对象只有一些初始值。

var obj = [{
    key1: 'someValue',
    key2: 'someValue',
    key3: 'someValue'
}, {
    key1: 'someValue2',
    key2: 'someValue2',
    key3: 'someValue2'
}]

我正在寻找类似于 Underscore 的 _.pluck,但结果会给出不止一个值。

[{
    key1: 'someValue',
    key2: 'someValue'
}, {
    key1: 'someValue2',
    key2: 'someValue2'
}]

使用 JavaScript 的内置 map 相当容易:

使用 ES2015 箭头函数:

var newArray = initialArray.map(e => ({key1: e.key1, key2: e.key2}));

var initialArray = [
      {key1: 'someValue', key2: 'someValue', key3: 'someValue'},
      {key1: 'someValue2', key2: 'someValue2', key3: 'someValue2'}
    ];
var newArray = initialArray.map(e => ({key1: e.key1, key2: e.key2}));

document.body.innerHTML = "<pre>" + JSON.stringify(newArray, null, 2) + "</pre>";

使用旧式函数:

var newArray = initialArray.map(function(entry) {
  return {key1: entry.key1, key2: entry.key2};
});

var initialArray = [
      {key1: 'someValue', key2: 'someValue', key3: 'someValue'},
      {key1: 'someValue2', key2: 'someValue2', key3: 'someValue2'}
    ];
var newArray = initialArray.map(function(entry) {
  return {key1: entry.key1, key2: entry.key2};
});

document.body.innerHTML = "<pre>" + JSON.stringify(newArray, null, 2) + "</pre>";

map 为数组中的每个条目调用一次回调,并根据回调中的 return 值构建一个新数组。所以在上面,我们 returning 新对象只有 key1key2.

(我将 obj 重命名为 initialArray 因为虽然数组 对象,但我想强调我们正在处理一个数组。)

如果object中有多个项目,而你想只保留几个项目,你可以使用pick

_.map(arr, o => _.pick(o, ['key1', 'key2']))

Demo


您可以使用 map with omit.

_.map(arr, o => _.omit(o, 'key3'))

Demo