vue修改或保留数组重复的值

1、当数组与另一组数据具有共同id,则更改数组中的某个值

当数组【arr】的[id]出现在数组【arrSelect】的[id]时,【arr】的子集isShow置为“1”
arr: [
    { id: 1, name: "qq", isshow: "0" },
    { id: 2, name: "ww", isshow: "0" },
    { id: 3, name: "ee", isshow: "0" },
    { id: 4, name: "rr", isshow: "0" },
  ],
arrSelect: [{ id: 2 }, { id: 4 }]
function tests() {
  for (let i of arr.value) {  //循环arr
    const a = arrSelect.value.find((item) => i.id === item.id);  //在arrSelect中寻找共同id
    console.log(a)  //存在则返回arrSelect的子集(对象) 不存在则返回undefined
     //存在返回  id:2  id:4
     //不存在返回  undefined
    if (a !== undefined) {//存在时,改变数值
      i.isshow = "1"
    }
  }
  console.log(arr.value)
  //arr最后结果:
  //[{id: 1, name: 'qq', isshow: '0'},{id: 2, name: 'ww', isshow: '1'},{id: 3, name: 'ee', isshow: '0'},{id: 4, name: 'rr', isshow: '1'}]

2、保留数组重复部分 或 修改重复部分的值

 arr: [
    { id: 1, name: "qq", isshow: "0" },
    { id: 2, name: "ww", isshow: "1" },
    { id: 3, name: "ee", isshow: "2" },
    { id: 4, name: "rr", isshow: "0" },
  ],
  arr2:[2,3],

保留重复部分:

function tests() {
//indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置
 let data = arr.value.filter(item =>arr2.value.indexOf(item.id) > -1)
 console.log('data',data)
 //data最后的值:[{ id: 2, name: "ww", isshow: "1" }, { id: 3, name: "ee", isshow: "2" }]
}

修改重复部分:

function tests() {
  arr.value.filter((item) => {
    if (arr2.value.indexOf(item.id) > -1) {
      item.isshow = "false";
    }
  });
  console.log("arr", arr.value);
  //arr最后的值: [
  //  { id: 1, name: "qq", isshow: "0" },{ id: 2, name: "ww", isshow: "false" },
  //  { id: 3, name: "ee", isshow: "false" },{ id: 4, name: "rr", isshow: "0" }]
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你想在 Vue修改数组对象中的重复,可以按照以下步骤: 1. 找到数组中所有重复 - 可以使用 `reduce()` 方法来创建一个新的数组,只包含重复 - 也可以使用 `filter()` 方法来过滤出重复 2. 对于每个重复,进行修改 - 可以使用 `map()` 方法来修改每个重复 - 可以使用 `Vue.set()` 方法来更新 Vue 数据响应式 以下是一个示例代码,演示如何在 Vue修改数组对象中的重复: ```vue <template> <div> <ul> <li v-for="(item, index) in modifiedArr" :key="index">{{ item.name }}</li> </ul> </div> </template> <script> export default { data() { return { arr: [ { id: 1, name: "John" }, { id: 2, name: "Jane" }, { id: 3, name: "John" }, { id: 4, name: "Peter" }, { id: 5, name: "Jane" }, ], }; }, computed: { duplicates() { return this.arr.reduce((acc, curr, index, array) => { if (array.findIndex((item) => item.name === curr.name) !== index && acc.indexOf(curr.name) === -1) { acc.push(curr.name); } return acc; }, []); }, modifiedArr() { return this.arr.map((item) => { if (this.duplicates.indexOf(item.name) !== -1) { const newItem = { ...item, name: `${item.name} (modified)` }; Vue.set(this.arr, this.arr.indexOf(item), newItem); return newItem; } return item; }); }, }, }; </script> ``` 在上面的示例中,我们使用 `computed` 计算属性来获取修改后的数组对象。首先,我们使用 `reduce()` 方法找到了所有重复,然后使用 `map()` 方法对每个重复进行了修改。在修改的过程中,我们使用了 `Vue.set()` 方法来更新 Vue 数据响应式。最终输出的结果是: ```html <div> <ul> <li>John</li> <li>Jane</li> <li>John (modified)</li> <li>Peter</li> <li>Jane (modified)</li> </ul> </div> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值