Lodash - Использование _.update внутри _.forEach - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь использовать метод _.update внутри метода _.forEach, и я не понимаю, почему вновь добавленное свойство имеет значение undefined.

К вашему сведениючтобы функция была определена отдельно, а затем передана в метод _.update, я не могу записать ее напрямую в метод _.update (она должна быть динамической).

Я попытался структурировать это внесколько разных способов, но ни один из них не работает.

let object = [{ 'a': 1, 'b': 1 }, { 'a':1, 'b': 1 }]
function myFunc (row) { return row.a + row.b }
_.forEach(object, row => _.update(row, 'c', myFunc(row)))

console.log(object)

Я ожидал получить:

[{ 'a': 1, 'b': 1, 'c': 2 }, { 'a':1, 'b': 1, 'c': 2  }]

1 Ответ

0 голосов
/ 16 июня 2019

Метод _.update() используется для обновления существующего свойства и принимает функцию средства обновления, а не значение (например, сгенерированное myFunc).

В вашем случае вы должны использовать _.set(), который принимает значение:

const object = [{ 'a': 1, 'b': 1 }, { 'a':1, 'b': 1 }]

function myFunc(row) {
  return row.a + row.b
}

_.forEach(object, row => _.set(row, 'c', myFunc(row)))

console.log(object)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

А если вам не нужно использовать lodash, вы можете использовать Array.forEach():

const object = [{ 'a': 1, 'b': 1 }, { 'a':1, 'b': 1 }]

object.forEach(row => row.c = myFunc(row))

function myFunc(row) {
  return row.a + row.b
}

console.log(object)
...