【问题标题】:Lodash _.omit function inside map地图内的 Lodash _.omit 函数
【发布时间】:2018-05-11 11:56:35
【问题描述】:

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

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;
}

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

结果我想得到这样的对象数组:

[{
    age: 29,
    city: 'New York'
  }, {
    age: 19,
    city: 'LA'
  }, {
    age: 89,
    city: 'Rio'
  }];

【问题讨论】:

    标签: object lodash arrayobject


    【解决方案1】:

    _.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);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

    【讨论】:

      【解决方案2】:

      常量数组 = [{ 编号:1, 名称:“彼得”, 年龄:29, 城市:“纽约” }, { 编号:2, 名称:“彼得2”, 年龄:19, 城市:“洛杉矶” }, { 编号:3, 名称:“彼得3”, 年龄:89, 城市:“里约” }];

      const 结果 = array.map(({年龄, 城市})=>( {年龄,城市}));

      【讨论】:

        【解决方案3】:

        单线解决方案可以

        _.map(array, o => _.omit(o, ['id', 'name']));
        

        _.map(array, o => _.pick(o, ['age', 'city']));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多