我正在尝试在_.forEach
方法中使用_.update
方法,但我不明白为什么新添加的属性的值为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 }]
_.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)