在JavaScript中仅从数组对象中选择一些部分

时间:2016-04-13 13:21:17

标签: javascript underscore.js

我有一个对象数组,我希望得到一个包含一些初始值的对象的新数组。

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

我看起来像是Underscore的_.pluck,但是不止一个值会给我带来结果。

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

2 个答案:

答案 0 :(得分:2)

如果对象中有多个项目,并且您只想保留少量项目,则可以使用pick

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

Demo

您可以将mapomit一起使用。

$(document).ready(function(){
  
    $("#hide").click(function(){$(".block").hide();});
    $("#show").click(function(){$(".block").show();});
  
});

Demo

答案 1 :(得分:0)

使用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为数组中的每个条目调用一次回调,并从回调中返回的值中构建一个新数组。因此,在上文中,我们仅使用key1key2返回新对象。

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