js判定対象配列にあるオブジェクトが存在するかどうか

1481 ワード

1.配列の中にある要素があるかどうかを判断するには良い判断です.直接配列のindexOf方法を使えばいいです.存在が戻り現在のインデックスが存在しない場合は戻り-1を返します.
var arr=[1,2,3,4]
arr.indexOf(3) // 2
arr.indexOf(5) // -1
2.判断するだけでは、巡回して対象の属性が同じかどうかを判断することができます.
arr.forEach(item=>{
 if(item.name=='Alex'){
 alert('      ');
 }
})
3.しかし、実際には、オブジェクトや要素を動的に追加したり削除したりする必要があります.この方法を使うと、操作が難しくなり、複数を追加または削除することがあります.stringのindexOf方法で判断することができます.
const option = {name:'111'}
//                       
if(JSON.stringify(arr).indexOf(JSON.stringify(option))==-1){
 arr.push(option); //        
}
 この判断は大丈夫ですが、一つの問題があります.対象の順序が違っていたら重複は検出できません.
例えば、arr=[{name:'张三',sex:'男'}]
option= {sex:'男',name:''張三'}
上記の方法で測定すると、実際にはこの配列オブジェクトが存在しますが、stringのindexOf法では正しいことを検出できないので、この方法を使う時はこの点に注意が必要です.
4.もう一つの常用方法は、フラグを設定して判断することです.
let flag = true;
let msg = '';
let arr = []

if(arr.length<6){
 arr.forEach(item=>{
 if(data.id===item.id){ //         id
 msg = '      !'
 flag = false;
 }
 })
}else{
 msg = '    6 !'
 flag = false;
}

if(flag){ //       -      6,             ,       
 arr.push(data)
}else{ //         
 alert(msg)
}
5.配列API someを利用して判断する
var result = arr.some(item=>{
 if(item.name=='  '){
 return true
 }
})

console.log(result) //   arr       name:'  ',    true,    false
if(result){ //     
  // do something
 }