javascript - JS/lodash : Mutate and return data in one line of code

标签 javascript lodash

我找不到这么简单的答案。如何改变对象属性,例如一个 bool 标志,然后在一行代码中返回变异对象?根据我下面的示例,现在需要两个。我读到的所有内容都说使用 map 与 for/forEach。

   toggleMenu(obj) {
        this.data = _.mapValues(this.data, function(v) {
             v.submenu = (v.submenu ^ (v.id === obj.id));
            return v;
        });
    }

更新

我应该补充一点,返回对象应该/可以不同,即 this.other = ... this.data = ...

   toggleMenu(obj) {
        this.other = _.mapValues(this.data, function(v) {
             v.submenu = (v.submenu ^ (v.id === obj.id));
            return v;
        });
    }

最佳答案

当您想要改变现有数组而不返回新数组时,无需重新分配值。在这种情况下,最好使用 _.forEach() (或 _.forOwn() 因为它是一个对象):

toggleMenu({ id }) {
  _.forEach(this.data, v => v.submenu ^= (v.id === id))
}

关于javascript - JS/lodash : Mutate and return data in one line of code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359138/

相关文章:

Javascript仅将源的交集分配给目标对象

lodash - 在 lodash 中结合执行 _.uniq 和 _.isEqual

javascript - 如何对 jQuery DataTables 中的数字列进行排序

javascript - 如何制作一个简单的 HTML CSS 时间图

javascript - backboneJS如何处理非模型[可能?]数据

Javascript:跳过多维数组中的多个级别

javascript - 使用 jQuery 替换按钮文本

javascript - Angular 在数组中定义的特定索引上运行 *ngFor

javascript - 我可以使用另一个 _.get 作为 lodash _.get 的默认值吗?

javascript - 按属性值对 JavaScript 对象数组进行排序