首页 > 解决方案 > Javascript说数字不在数组中?

问题描述

var colors={
    red: [1,2,3,4,5,6],
    green: [14,15,16],
    black: [8,9,10,11,12,13],

}

我在一个赌博网站上工作,这是随机预测代码的一部分。当我输入控制台时,它会与绿色数组中的任何其他数字一起14 in colors.green返回。false但是,任何数字都来自red或使用相同的控制台命令black返回。true有人知道为什么吗?

标签: javascriptweb

解决方案


使用in检查来查看值是否是对象(或对象原型上的任何位置)的属性名称。对于您正在做的事情,您应该使用该includes方法,该方法检查一个值是否是数组的值之一:

var colors={
    red: [1,2,3,4,5,6],
    green: [14,15,16],
    black: [8,9,10,11,12,13],
};
console.log(colors.green.includes(14));
console.log('red' in colors);

如果您需要支持过时的浏览器并且不能使用 polyfill,您可以检查是否indexOf为 -1:

var colors={
    red: [1,2,3,4,5,6],
    green: [14,15,16],
    black: [8,9,10,11,12,13],
};
// any number other than -1 means the element was found:
console.log(colors.green.indexOf(15));
console.log(colors.green.indexOf(999));


推荐阅读