js中如何判断一个值是否在数组中
发布于 8 年前 作者 mokaikai 67088 次浏览 来自 问答

var a = [1,2,3] if (1 in a) { console.log(‘something’) } 这样写不对,可以不写循环么,es6的语法也行。 python过来的新手,见谅,感谢!

16 回复

https://cnodejs.org/topic/56a050ac8392272262331d62 论坛里看到了这个帖子,很赞

在ECMAScript 2016 (ES7)甚至可能将其应用于数组,像indexOf一样: !!~[1, 2, 3].indexOf(1); // true [1, 2, 3].includes(1); // true

是不是说明只能写循环了

Array对象有一个indexOf方法,如果存在返回元素的位置,如果不存在返回-1;可以利用一下…

感谢2楼!

哦 lz在这个需求里千万不能用in操作符 in 是说存不存在这个key而不是value!

var a = [66,99,77];
66 in a //false
0 in a  //true
var vv = {aa:11,bb:22};
"aa" in vv; //true
"cc" in  vv //false

做实验的时候很容易 试成这样

var a = [1,2,3]; //undefined
1 in a; //true

不要被迷惑嘞

@gjc9620 了解,感谢。

@mokaikai 回的好快=。= 没事

mark!是不是应该: 用of操作符呢? var a = [1,2,3] if (1 of a) { console.log(‘something’) }

@hanzhong-yan of不还是迭代么。。还是indexOf最简单呢

@gjc9620 恩,现在看来还是indexOf,其实就是我要的of的意思

var a = [1,2,3] if ( a.indexOf(1) !=-1) { console.log(‘something’) }

@hanzhong-yan for of 是遍历对象的key吧。

@yhc-yhc for of 是遍历实现了Iterable接口的数据结构对象,array is iterable , generator function is iterable too .

array 有几个方法可以选用: .indexOf().lastIndexOf() 可以判断一个 Value 是否在数组中, 并返回其下标. 大家已经都说了. 参考

另外还有几个, 应该都算是函数式的风格: .every(function) 返回是否每个元素都符合 function 的要求 .some(function) 返回是否至少存在一个元素满足 function 的要求 .find(function) 返回第一个符合 function 要求的数组元素值, 注意返回的是 Value 不是 index. 参考

@Chunlin-Li 学习了,感谢!

注意低版本的ie里,Array是不支持indexOf这个方法的。要兼容所有浏览器并且自己写的话,还是要用for

回到顶部