Bootstrap

3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景|判断数组里有没有某对象,有不添加,没有则添加到数组

3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景

一、当数组中的数据是简单类型时:

应用js中的indexof方法:存在则返回当前项索引,不存在则返回 -1。

var arr=[1,2,3,4]
		var str=2
		// 如果不等于-1则代表存在
		if(arr.indexOf(str) != -1){
   
			console.log('存在!')
		}
		// 否则不存在
		else{
   
			console.log('不存在!')
		}

二、当数组中的数据是复杂类型的对象时:

方法1:json化成字符串再用indexOf

因为对象是复杂类型的,得先化成字符串再用indexOf.

注意:indexof 你得确保查找的这个对象与数组内的对象完全一致,对象里每一个键值对的位置都一致,才能说是完全相等的对象。

比如说,这个数组里的对象arr_obj本来就是由obj加进去的,此时obj判断是不是已经加进去了。如果加进去了就不用再加了,这种情况可以适用。

indexof原本并不是用于数组里比较复杂类型的对象,它主要用于简单数据类型。

用法:

//验证条件
if(JSON.stringify(arr).indexOf(JSON.stringify(obj)) == -1){
   
     console.log('该项不存在!')
}else{
   
     console.log('该项存在!')
}
//对象添加进数组后,查找数组中这个对象。
console.log(arr[arr.indexOf(obj)]) //简单类型
console.log(arr[JSON.stringify(arr).indexOf(JSON.stringify(obj))]) //复杂类型
//查找数组中这个对象的某个键 count键
console.log(arr[JSON.stringify(arr).indexOf(JSON.stringify(obj))].count)

应用

	obj={
   id:1,name:'xiaoming',age:16,count:0}
//	obj={id:4,name:'xiaoli',age:17,count:0}  //验证不存在
	arr=[
	        {
   id:1,name:'xiaoming',age:16,count:0},
	        {
   id:2,name:"xiaobai",age:19,count:0}
	    ]
	
	if(JSON.stringify(arr).indexOf(JSON.stringify(obj)) == -1){
   
	//数组中不存在该项,把该项添加到数组中
	  console.log('该项不存在!')
      arr.push(obj);
      console<
;