【问题标题】:Vue JS how to delete object based on array valuesVue JS如何根据数组值删除对象
【发布时间】:2020-01-26 12:20:28
【问题描述】:

我有一个对象数组,例如:

types: [
{
 id: 1,
 name: "Hello"
},
{
 id: 2,
 name: "World"
},
{
 id: 3,
 name: "Jon Doe"
}
]

我也有一个像这样的简单数组:

selected_types = [1, 2]

所需的结果应过滤 "types" 数组并排除 "selected_types" 数组中存在的所有 id,如下所示:

final_types: [
{
 id: 3,
 name: "Jon Doe"
}
]

我完全不知道如何实现这一点,但以下是我的尝试:

   this.types.filter(obj => {
        for (let i = 0; i < this.selected_types.length; i++) {
          if (obj.id !== selected_types[i]) {
            final_types.push(attribute);
          }
        }
      });

【问题讨论】:

    标签: javascript arrays vue.js ecmascript-6 vue-component


    【解决方案1】:

    只需使用this.types.filter(({id}) =&gt; !this.selected_types.includes(id)):

    let types = [{
        id: 1,
        name: "Hello"
      },
      {
        id: 2,
        name: "World"
      },
      {
        id: 3,
        name: "Jon Doe"
      }
    ]
    
    let selected_types = [1, 2];
    let resArr = types.filter(({id}) => !selected_types.includes(id));
    console.log(resArr);

    【讨论】:

    • 不知道作者是否清楚。我建议添加 ({id})let id = obj.id 相同。
    【解决方案2】:

    可以实现Javascript的原生方法过滤,最终返回一个新对象

    let types = [{
        id: 1,
        name: "Hello"
      },
      {
        id: 2,
        name: "World"
      },
      {
        id: 3,
        name: "Jon Doe"
      }
    ]
    
    let selected_types = [1, 2];
    
    types = types.filter(obj => {
      if (selected_types.indexOf(obj.id) === -1) {
         return obj
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2020-04-28
      • 2023-03-27
      • 2017-12-01
      • 2019-11-19
      相关资源
      最近更新 更多