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
。有人知道为什么吗?
答案 0 :(得分:4)
使用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));