Lodash set не применяет обновление к массиву - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь обновить поле 'mobileNumber' всех элементов в массиве.Я попробовал следующие предложения здесь, в StackOverflow, но, похоже, ни одно из них не обновляет поле в массиве.

_.each(results, function(item) {
  _.set(item, 'mobileNumber', 2);
});

const formattedResults = _.each(results, function(item) {
  _.set(item, 'mobileNumber', 2);
});

Что я делаю не так?

РЕДАКТИРОВАТЬ: в Typescript получается, чтодаже присвоение моего исходного массива новому массиву с помощью let, каким-то образом сохранил новый массив только для чтения.

В итоге я использовал lodash _clone, перед тем как установить значение, а затем обновление сработало ...

let formattedResults = _.map(results, _.clone);

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Извините за вопрос, но зачем нужна _.set?Обычно вы хотите использовать set в сценариях, где свойство, которое вы хотите изменить, передается в виде строки и т. Д. Глядя на ваш код, вы mobileNumber устанавливаете / жестко кодируете внутри _.each тела ... или это просто дляпример цели?

Потому что в противном случае он более лаконичен (и не нуждается в lodash), просто:

let results = [{mobileNumber: 1, foo: 2}, {mobileNumber: 3}, {mobileNumber: 7}]

results.forEach(x => x.mobileNumber = 2)

console.log(results)
0 голосов
/ 26 сентября 2018

То, что вы сделали, на самом деле правильно, проверьте здесь https://jsbin.com/fiyinahovi/edit?js,console

let results = [{mobileNumber: 1}, {mobileNumber: 3}, {mobileNumber: 7}]
_.each(results, function(item) {
  _.set(item, 'mobileNumber', 2);
});

console.log(results);
...