Функция Lodash _.omit внутри карты - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь написать функцию, которая преобразует массив объектов.

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

1 Ответ

0 голосов
/ 11 мая 2018

Оба _.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>
...