scope - Lodash - 在 _.forEach 中使用 _.update
问题描述
我正在尝试在_.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 }]
解决方案
该_.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)
推荐阅读
- google-chrome-devtools - Chrome 网络开发工具的请求数上限为 261
- solidity - LINK_TOKEN_POINTER 做什么
- python - 通过张量流中的向量缩放稀疏张量的列
- python - scipy.sparse.linalg.eigs 与 MATLAB 中的 eigs 相比具有显着不同的结果
- mongodb - 如何使用 $multiply MongoDB 的结果更新字段
- python - 检查时间值是否在 Python 的 CSV 文件中提到的两个值之间
- sql - 为什么 SQL 不使用双等号 (==) 来表示“A 等于 B”?
- c - 在 C 中使用 openmp 时的数值差异
- jmeter - 我如何使用 JMeter 来支持 250 个用户,同时有 100 个用户
- c++ - 更改文件的第一行并转到最后一行而不丢失数据c ++