数组对象中,匹配value,删除对象

1、什么是Set()

Set是es6新增的数据结构,似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。

Set本身是一个构造函数,用来生成 Set 数据结构

匹配的value值是字符串类型,如果是number类型,includes()和indexOf()不可用。详看定义:

    let arr=['123','345','456']
    let a=new Set(arr)
    console.log(a.has('123'));//true

 

 

 

方法一:Object.entries(),includes(),splice()

方法二:indexOf(),splice()

let arr =[
    {
        key: 1,
        second: 1,
        value: "美妆"

    },{
        key: 1,
        second: 1,
        value: "啊美没",
    },{
        key: 72,
        second: 1,
        value: "颜值达人",
    }
]

for(let [key,val] of Object.entries(arr)){
    if('啊美没'.includes(val.value)){
      arr.splice(key,1)
    }
}
console.log(arr) // [{key: 1,second: 1,value: "美妆"},{key: 72,second: 1,value: "颜值达人"}]

for(let i=0;i<arr.length;i++){
  if((arr[i].value).indexOf('人')>-1){
    arr.splice(i,1);
  }
}
console.log(arr) //[{key: 1,second: 1,value: "美妆"}]

 

如果是number类型的,上面的方法就都用不了了,直接===去匹配了,添加省份的时候,将已选择的省份下的市删除。

                let obj = {id:5,name:'河北省',pid:0}
                let arr = [{id:73,name:'保定',pid:5},{id:121,name:'唐山市',pid:5},{id:48,name:'临汾',pid:6}]
                for(let i in arr){
                  if(arr[i].pid===obj.id){
                    arr.splice(i,1);
                  }
                }
arr.push(obj)
console.log(arr) // [{id:5,name:'河北省',pid:0},{id:48,name:'临汾',pid:6}]        

 

posted @ 2022-08-25 18:06  最爱小虾  阅读(217)  评论(0编辑  收藏  举报