JS判断数组含有某值,in、indexOf、includes、find、findIndex方案对比
本文测试数据:
let arr=["a","b","c"]; //数组
let arr2={"a":"aaa","b":"bbb","c":"ccc"}; //对象
1、in
in操作符针对的是key,而非value。而对于普通的一维数组来说,key是隐藏的。所以,对于判断某个数组中是否含有某个值来说,这个方案并不合适。
in方案测试代码如下:
console.log("a" in arr);
console.log("aa" in arr);
console.log(2 in arr);
console.log(5 in arr);
console.log("a" in arr2);
console.log("aa" in arr2);
测试结果为:
1577957951350.png
2、indexOf
console.log(arr.indexOf("a")); //存在则返回第一次出现的位置
console.log(arr.indexOf("aa")); //不存在则返回-1
console.log(arr2.indexOf("b")); //报错,对象没有indexOf方法
console.log(arr2.indexOf("aaa")); //报错
测试结果为:
1577958207260.png
3、includes
同indexOf一样,includes仅能用于数组操作。
console.log(arr.includes("a")); //包含返回true,不包含返回false
console.log(arr.includes("aa"));
console.log(arr2.includes("a")); //报错,对象没有includes方法
console.log(arr2.includes("aa")); //报错
测试结果为:
1577958538019.png
4、find()
console.log(arr.find((n) => n === "a")); //包含返回该值,不包含返回undefined
console.log(arr.find((n) => n === "aa"));
console.log(arr2.find((n) => n === "a")); //报错,对象没有find方法
console.log(arr2.find((n) => n === "aa")); //报错
测试结果:
1577959046765.png
5、findIndex()
与 find() 类似,但包含时返回该值的位置。
发表评论 (审核通过后显示评论):