lensh / vue-qq

🎨 Vue family bucket with socket.io and express/koa2 , create a web version of mobile QQ, supporting real-time group chat, real-time private chat, special care, shielding chat, smart IP geographic location, real-time display temperature and other QQ core functions
MIT License
917 stars 231 forks source link

关于Array.prototype.includes #1

Open lensh opened 7 years ago

lensh commented 7 years ago

这是ES7新增的判断数组里面是否存在某个值的方法,存在时返回true,否则返回false。 例如:const arr=[1,3,4,5,6] ,那么arr.includes(3)将返回true,因为包含了数字3 值得注意的是,如果该值是一个非空对象,那么无论怎么判断,都是返回false的。

const arr=[{name:'zls'}]
console.log(arr.includes({name:'zls'}))   // false,注意这里是返回false

其它基本数据类型都是返回true,所有测试用例如下:

   const arr=[1]
   console.log(arr.includes(1))  // true
   const arr1=[true,false]
   console.log(arr1.includes(true))   //true
   const arr2=[undefined]
   console.log(arr2.includes(undefined))   // true
   const arr3=['str']
   console.log(arr3.includes('str'))   // true
   const arr4=[null]
   console.log(arr4.includes(null))   // true
   const arr5=[{name:'zls'}]
   console.log(arr5.includes({name:'zls'}))   // false

如果我们要判断数组里是否存在某个对象,我们可以使用arr.find()或者arr.findIndex(), 例如 const arr=[{name:'zls'}],如果要判断这个arr数组里是否包含 {name:'zls'},可以这样:

const index=arr.findIndex((item)=>{
   return item.name='zls'
})
//   index为0,在第0个位置,所以是存在的