地图内的Lodash _.omit函数

Bir*_*ird 1 object arrayobject lodash

我正在尝试编写一个函数,该函数将转换对象数组。

var array = [{
    id: 1,
    name: 'Peter',
    age: 29,
    city: 'New York'
}, {
    id: 2,
    name: 'Peter2',
    age: 19,
    city: 'LA'
}, {
    id: 3,
    name: 'Peter3',
    age: 89,
    city: 'Rio'
}];

function mapArray(array) {
    _.map(array, object => {
        _.omit(object, ['id', 'name']);
    });

    return array;
}
Run Code Online (Sandbox Code Playgroud)

而且它不起作用。结果,我得到一个包含所有字段的数组。Lodash版本是4.17.4。我也使用nodejs,如果有关系的话:D

结果,我想要获得这样的对象数组:

[{
    age: 29,
    city: 'New York'
  }, {
    age: 19,
    city: 'LA'
  }, {
    age: 89,
    city: 'Rio'
  }];
Run Code Online (Sandbox Code Playgroud)

Ori*_*ori 6

双方_.map()_.omit()分别返回一个新的数组/对象,不改变原来的项目。您必须返回地图的结果,并删除包裹省略号的大括号(在箭头函数内部):

var array = [{"id":1,"name":"Peter","age":29,"city":"New York"},{"id":2,"name":"Peter2","age":19,"city":"LA"},{"id":3,"name":"Peter3","age":89,"city":"Rio"}];

function mapArray(array) {
  // return from _.map
  return _.map(array, object =>
    _.omit(object, ['id', 'name']) // return from _.omit
  );
}

// assign the results to a new variable
var result = mapArray(array);

console.log(result);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)