如何判断JavaScript数组是否包含指定元素?(面向JS初学者)
完善
contains函数的几种入门级解法 嘿,刚接触JavaScript的话,咱们从最基础到最简洁的方式一步步来实现这个函数,保证你能看懂~
方法1:基础for循环(理解数组遍历的核心)
这是最适合新手理解原理的写法,手动遍历数组的每一项,对比是否和目标item相等:
function contains(arr, item) { // 遍历数组的每一个元素 for (let i = 0; i < arr.length; i++) { // 如果当前元素和item严格相等,直接返回true if (arr[i] === item) { return true; } } // 遍历完整个数组都没找到匹配项,返回false return false; }
小贴士:这里用===严格相等是入门阶段的好习惯,它会同时检查值和数据类型(比如1和'1'不会被判定为相等)。如果你的业务场景需要忽略类型匹配,可以换成==,但优先推荐===哦。
方法2:使用数组内置方法indexOf
JavaScript数组自带的indexOf方法会返回目标元素在数组中的索引位置,如果找不到就返回-1,咱们可以利用这一点快速实现需求:
function contains(arr, item) { // 只要indexOf返回的结果不是-1,就说明元素存在 return arr.indexOf(item) !== -1; }
这个写法比手动循环简洁很多,不用自己写遍历逻辑,适合已经理解遍历原理后使用。
方法3:ES6+的includes方法(最简洁的写法)
如果你的运行环境支持ES6及以上(现在大部分浏览器和Node.js都支持),includes方法是最直接的选择——它专门用来判断元素是否存在于数组中,直接返回布尔值,完全贴合咱们函数的需求:
function contains(arr, item) { return arr.includes(item); }
是不是超级省心?这个方法还支持第二个参数,用来指定从哪个索引位置开始查找,比如arr.includes(item, 2)就是从数组的第3个元素(索引从0开始)往后查找。
小提醒
上面的方法对于字符串、数字、布尔值这类基本数据类型都很管用,但如果要判断的是对象、数组这类引用类型,这些方法只会判断是否是同一个内存引用(也就是同一个对象),而不是内容是否相同。不过刚入门的话,先把基本类型的判断掌握好就足够啦~
内容的提问来源于stack exchange,提问作者Liv Marx
相关产品推荐
相关产品推荐

