/** * 判断数组中是否包含某个值 * @param arr 数组 * @param str 值 * @returns {boolean} */ function contains(arr, str) { var i = arr.length-1; while (i--) { if (arr[i] == str) { return true; } } return false; }
var arr1 = ['a', 'b']; var arr2 = {'name': 'yy', 'password': '123'}; //in 的使用 console.log('a' in arr1); //false console.log('a' in arr2); //false //indexOf 的使用 console.log(arr1.indexOf('a')); // true console.log(arr2.indexOf('a')); //报错 //includes的使用 console.log(arr1.includes('a')); //true console.log(arr2.includes('a')); //报错
function inArray (array, search) { for (var i in array) { if (array[i] == search) { return true; } } return false; }
总结:
- in操作符针对的是key,而非value。而对于普通的一维数组来说,key是隐藏的。所以,对于判断某个数组中是否含有某个值来说,这个方案并不合适。
- indexOf是用于字符串的。但是在这里,用于一个数组的话,也是可以执行的。但是用在一个对象obj上面的时候,是报错的。
- 同indexOf一样,includes仅能用于数组操作