【问题标题】:Append property to each object within array将属性附加到数组中的每个对象
【发布时间】:2020-07-07 22:59:06
【问题描述】:

大家早上好,

所以在这里我问自己这个问题,看看我是否在优化这个评级,但我觉得我做错了。

让我解释一下。

我们恢复一个包含对象的数组,例如用户。

谁会给这个:

 [
   {
     'name': 'john',
     'age': '25'
   },
   {
     'name': 'Doe',
     'age': '28'
   },
   ...
 ]

但是在 vuejs 或 javascript 或其他中,我发现自己有时会添加一个示例值:“'edit': false”,但在这里要将其添加到我的表中的所有对象中,我会使用 each 和 i 传递表像这样添加这个值。但我觉得它不干净,您是否有其他提示或您是如何做到的?

 [
   {
     'name': 'john',
     'age': '25',
     'edit': false
   },
   {
     'name': 'Doe',
     'age': '28',
     'edit': false
   },
   ...
 ]

我个人很喜欢

$.each(this.users, function(key){
                        Vue.set(this, 'edit', false)
                    });

感谢您的回答,祝您有美好的一天,最重要的是身体健康。对不起我的英语不好!

【问题讨论】:

  • 似乎工作正常,没有任何问题,那么您现在真正想要的是什么?
  • 我只是想知道除了我的之外还有没有其他解决方案!

标签: javascript jquery vue.js vuejs2


【解决方案1】:

如果你使用 ES6,你可以这样做:

var users = [
    { name: 'John', age: 25 },
    { name: 'Jane', age: 28 }
];

users.map(user => user.edit = false);

【讨论】:

  • 以这种方式使用map() 没有多大意义,因为它返回false 的无用数组并改变源数组。使用Array.prototype.forEach() 会更好。但是,如果您尝试进行不可变编辑,您可以参考 my post 以了解正确的方法。
  • 对你来说最优化的答案是什么?
【解决方案2】:

使用map和spread运算符

const users = [
    { name: 'John', age: 25 },
    { name: 'Jane', age: 28 }
];

const usersUpdated = users.map(user => ({ ...user, edit: false }));

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2023-01-12
    • 2015-01-27
    • 2011-10-03
    • 1970-01-01
    • 2021-03-05
    相关资源
    最近更新 更多