运行中的Javascript不使用一个项数组

运行中的Javascript不使用一个项数组,javascript,arrays,compare,Javascript,Arrays,Compare,在下面的代码段后面,为什么在操作中使用时,位置为one的数组不能正常工作 您可以看到,使用2项操作效果良好 为什么会发生这种情况? 你的工作是什么 //helper函数 函数showResult(结果){ document.querySelector(“#result”).innerHTML+=result+'; } 变量a=[“1”] var b=“1” 展示结果(a中的b); //假的 变量a=[“1”,“2”] var b=“1” 展示结果(a中的b); //正确 这不是中的的用途不

在下面的代码段后面,为什么在操作中使用
时,位置为one的数组不能正常工作

您可以看到,使用2项操作效果良好

  • 为什么会发生这种情况?
  • 你的工作是什么
//helper函数
函数showResult(结果){
document.querySelector(“#result”).innerHTML+=result+'
; } 变量a=[“1”] var b=“1” 展示结果(a中的b); //假的 变量a=[“1”,“2”] var b=“1” 展示结果(a中的b); //正确

这不是
中的
的用途<
中的code>不用于在数组中搜索元素。它是用来在物体上搜索钥匙的

例如:

var x = {a: 1, b: 2};
console.log('a' in x); // true

第二个示例之所以有效,是因为数组(对象)
a
包含一个名为
1
的键。第一个结果是
false
,因为
a
没有索引1,而
a
的第二个版本有该索引

运算符中的
不是关于确认值,而是关于属性(键)

混淆可能是因为CoffeeScript在
中使用了
来搜索值。它是如何将其转换为
索引的

检查对象是否有键,而不是值。第二种情况返回
true
,因为任何包含两个元素的数组都有键
'0'
'1'
'1'
恰好也是该数组中的一个值,这并不重要<['foo','bar']
中的code>'1'也是正确的

要测试元素是否在数组中,应在现代引擎中使用或。您可以使用这些链接中的任意一个来获得对所有引擎中该方法的支持:

// Most engines (IE 9+)
showResult( a.indexOf( b ) >= 0 );

// Modern engines only:
showResult( a.includes( b ) );

谢谢你的回答,那么解决方法是什么?@AlvaroJoao
myArray.indexOf(value)>-1
会做你想做的事情当我们讨论这个话题时,你应该阅读关于..的
in
如果你以前没有读过的话。这是一个常见的陷阱。@4谢谢你提出这个问题!我现在就读!