Lodash设置数组中的每个元素

问题描述 投票:0回答:1

有没有办法在_.set方法中使用字符串符号来匹配嵌套数组中的所有项目?

(例如,希望类似于MongoDB的_.set方法。全位置 操作者)

const doc = {
  nested: [{a: 1}, {a: 2}, {a: 3}]
}

_.set(doc, "nested.$[].a", 5)

// console.log(doc)
// {
//   nested: [{a : 5}, {a: 5}, {a: 5}]
// }
javascript arrays lodash
1个回答
1
投票

不,你不能用这个操作来设置嵌套数组中的每个元素 .set() 方法,但你可以用这个方法代替。

const doc = {
  nested: [{a: 1}, {a: 2}, {a: 3}]
}

// Your attempt.
// _.set(doc, "nested.$[].a", 5)

// Just use a .map() with .assign() instead.
const doc2 = _.assign({}, doc, {
  nested: _.map(doc.nested, (obj) => _.assign({}, obj, { a: 5 }))
});

console.log(doc2)
// {
//   nested: [{a : 5}, {a: 5}, {a: 5}]
// }
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.