如下代码片段所示,为什么在使用操作时具有一个位置的数组无法正常IN
工作?
您可以看到,使用2项操作可以正常进行。
// helper function
function showResult(result) {
document.querySelector('#result').innerHTML += result+'<br/>';
}
var a = ["1"]
var b = "1"
showResult(b in a);
//false
var a = ["1","2"]
var b = "1"
showResult(b in a);
//true
<div id="result"></div>
的在操作者检查是否一个对象具有一键,而不是一个值。您的第二种情况返回true
是因为具有两个元素的任何数组都具有键'0'
和'1'
。没关系,'1'
也恰好是该数组中的一个值;'1' in ['foo', 'bar']
也是如此。
要测试元素是否在数组中,应使用Array.prototype.indexOf或在现代引擎Array.prototype.includes中使用。您可以从任何一个链接中使用polyfill来在所有引擎中获得对该方法的支持:
// Most engines (IE 9+)
showResult( a.indexOf( b ) >= 0 );
// Modern engines only:
showResult( a.includes( b ) );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句