数组对象中,匹配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}]
只有在泥泞的道路上才能留下脚印