测试数据
let arr = ['a', 'b', 'c']
let obj = {'a': 1, 'b': 2, 'c': 3}
1. in
console.log('a in arr', 'a' in arr)
console.log('aa in arr', 'aa' in arr)
console.log('2 in arr', 2 in arr)
console.log('3 in arr', 3 in arr)
console.log('a in obj', 'a' in obj)
console.log('aa in obj', 'aa' in obj)
运行结果
a in arr false
aa in arr false
2 in arr true
3 in arr false
a in obj true
aa in obj false
总结
in
操作符
- 针对的是key值,而非value值.
- 对于数组,key值是隐藏的,表示索引值(index)
- 对于对象,key值显而易见。
- 返回值:存在true,不存在false
indexOf
console.log('arr.indexOf("a")',arr.indexOf("a"))
console.log('arr.indexOf("aa")',arr.indexOf("aa"))
console.log('obj.indexOf("a")', obj.indexOf("a"))
console.log('obj.indexOf("aa")',obj.indexOf("aa"))
运行结果
arr.indexOf("a") 0
arr.indexOf("aa") -1
报错
报错
总结
indexOf
操作符
- 仅用于字符串、数组。不能用于对象。
- 返回值: 存在返回 索引值(index), 不存在返回 -1
includes
console.log('arr.includes("a")',arr.includes("a"))
console.log('arr.includes("aa")',arr.includes("aa"))
console.log('obj.includes("a")', obj.includes("a"))
console.log('obj.includes("aa")',obj.includes("aa"))
运行结果
arr.includes("a") true
arr.includes("aa") false
报错
报错
总结
indexOf
操作符
- 仅用于字符串、数组。不能用于对象。
- 返回值:存在true,不存在false
自定义函数find
function find(search, object) {
for (i in object) {
if(object[i] === search) {
return true
}
}
return false
}
console.log('find("a",arr)', find('a', arr))
console.log('find("aa",arr)', find('aa', arr))
console.log('find("a",obj)', find('a', obj))
console.log('find("aa",obj)', find('aa', obj))
运行结果
find("a", arr) true
find("aa", arr) false
find("a", obj) false
find("aa", obj) false
总结
自定义函数find可以用于数组和对象。
总结
数组包含某个值的判断:includes / indexOf / find
数组包含某个键(index)的判断: in
对象包含某个值(value)的判断: find
对象包含某个键(key)的判断: in