Javascript 检查数组是否包含值?(我尝试了一些技巧,但还是有点迷路)

Javascript 检查数组是否包含值?(我尝试了一些技巧,但还是有点迷路),javascript,arrays,Javascript,Arrays,我是JavaScript的初学者(学习大约一周的初学者),我一直在研究如何检查数组是否包含某个字符串。我做了一个猜字游戏 我声明函数包含如下内容: function contains(thing, array){ if(thing in array){ return true; } else { return false; } }; 我不确定我做错了什么,但值总是假的 该函数使用第三种技术。但我也尝试过使用公认的技术,两者的结果都是一样的 非常感谢您的帮助 使用

我是JavaScript的初学者(学习大约一周的初学者),我一直在研究如何检查数组是否包含某个字符串。我做了一个猜字游戏

我声明
函数
包含如下内容:

function contains(thing, array){
  if(thing in array){
    return true;
  }
  else {
    return false;
  }
};
我不确定我做错了什么,但值总是假的

该函数使用第三种技术。但我也尝试过使用公认的技术,两者的结果都是一样的

非常感谢您的帮助

使用该方法。
操作员检查是否存在键,而不是值。
您也可以在循环中使用for..来迭代对象的所有键:

for (key in object)
    console.log(object[key])
对于数组,它将给出与

for (index=0; index<array.length; index++)
    console.log(array[i])

for(index=0;index必须单独回答以确保这一点清楚。查看数组中是否有内容的正确方法:

var myArr = ['apples', 'bananas', 'pears'];

if (myArr.indexOf('pears') > -1) { // myArr.indexOf('pears') will equal the number 2
    console.log('we got pears'); // this will log
}

if (myArr.indexOf('hotdogs') > -1) { // since it's not in the array, it's -1
    console.log('hotdog!'); // this will not log
}

最后请注意,
for…in
循环实际上不应该用于迭代数组——它确实存在于迭代对象中的键。对于在JS中迭代数组,经典的
for
循环是正确的方法。

使用数组方法。请粘贴您的代码(非工作部件的最小复制)这样我们就不需要访问另一个站点,并且如果该链接失效,您的问题也会有意义。
for in
用于常规属性枚举,它可以包括数组,但通常避免用于此目的。
in
操作符用于检查属性的存在。我无法判断您正在使用哪个属性在你的答案中引用。OP的两个链接引用了
.indexOf()
,因此需要更具体的帮助。@Syntac——正确地说需要使用indexOf——但是,请注意,
循环中的
for…实际上不应该用于迭代数组——它确实存在于迭代对象中的键。对于在JS中迭代数组,经典的
for
循环是正确的方法。
for-in
的不同。这两者之间存在着重要的区别。然而,OP实际上是在执行
if(数组中的东西){
,这是关于属性检查,而不是迭代。