javascript - 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
有人知道为什么吗?
解决方案
使用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));
推荐阅读
- javascript - 渲染对象 React 数组
- android-toolbar - 在 androidx.appcompat.app.ActionBarDrawerToggle 中不显示汉堡包按钮
- typescript - 具有接口类型之一的变量?
- qt - 由于 ssl 问题,无法在 Ubuntu 上安装 QT4
- reactjs - 动态组件在 React 中不起作用
- javascript - 为什么传递函数 ref 而不是调用函数的 lambda 会有所不同?
- c# - 过滤同一 ObservableCollection 的多个 CollectionView - WPF
- java - 按对象中的不同参数对 ArrayList 进行排序
- c++ - Performance vs Readability: Local copies in functions
- postgresql - 创建 MATERIALIZED VIEW 时如何 CAST 数据类型并使用 CASE 更改值?(PostgreSQL)