在JS中要判断一个值是否在数组中并没有函数直接使用,如PHP中就有in_array()这个函数。但我们可以写一个类似in_array()函数来判断是一个值否在函数中。 /** * JS判断一个值是否存在数组中 */ // 定义一个判断函数 var in_array = function(arr){ // 判断参数是不是数组 var isArr = arr && console.log( typeof arr==='object' ? arr.constructor===Array ? arr.length ? arr.length===1 ? arr[0]:arr.j 在JavaScript中,没有内置函数可以直接用来判断一个值是否存在于数组中,这与PHP中的`in_array()`函数不同。为了实现类似的功能,我们可以自定义一个`in_array`函数。以下是对这个自定义`in_array`函数的详细解释: 我们需要定义一个函数`in_array`,它接受一个参数`arr`,即我们要检查的数组。在这个函数中,我们首先要验证传入的参数`arr`是否是一个数组。我们通过以下方式检查: ```javascript var isArr = arr && (typeof arr === 'object') && (arr.constructor === Array) && (arr.length !== undefined) && ((arr.length === 1) ? arr[0] : arr.join(',')) === 'an empty array'; ``` 这里,我们使用了多个条件来确保`arr`是一个非空数组。`typeof arr === 'object'`检查`arr`是否为对象,接着`arr.constructor === Array`确认它是否为数组类型。`arr.length !== undefined`确保数组有长度属性,最后`((arr.length === 1) ? arr[0] : arr.join(',')) === 'an empty array'`用来区分数组是否为空。如果数组只有一个元素,它会将该元素返回;否则,返回元素组成的字符串。 如果`arr`不是一个数组,函数会抛出一个异常,提示"arguments is not Array": ```javascript if (!isArr) { throw "arguments is not Array"; } ``` 接下来,我们使用一个`for`循环遍历数组,比较当前元素`this`(在上下文中,指调用`in_array`的值)是否等于数组中的某个元素: ```javascript for (var i = 0, k = arr.length; i < k; i++) { if (this === arr[i]) { return true; } } ``` 如果找到匹配的元素,函数会立即返回`true`。如果没有找到,则在循环结束后返回`false`: ```javascript return false; ``` 为了方便使用,我们还可以扩展`String`和`Number`原型,让它们拥有`in_array`方法: ```javascript String.prototype.in_array = in_array; Number.prototype.in_array = in_array; ``` 这样,我们就可以直接对字符串和数字调用`in_array`方法,例如: ```javascript var arr = ['blue', 'red', '110', '120']; var str = 'red'; var isInArray = str.in_array(arr); alert(isInArray); // true var num = 119; var isInArray = num.in_array(arr); alert(isInArray); // false ``` 当传入的参数不是数组时,如`null`,`in_array`函数会抛出一个异常,提示"arguments is not Array"。因此,在使用此函数时,确保传入的是有效的数组至关重要。 通过这样的自定义`in_array`函数,我们可以在JavaScript中模拟PHP的`in_array`功能,方便地判断一个值是否存在于数组中。然而,JavaScript的`Array.prototype.includes`方法(ES6引入)已经提供了同样的功能,使用起来更为简洁,例如: ```javascript var arr = ['blue', 'red', '110', '120']; var str = 'red'; var isInArray = arr.includes(str); // true var num = 119; var isInArray = arr.includes(num); // false ``` 因此,除非需要兼容不支持`includes`的老版本浏览器,否则直接使用`Array.prototype.includes`会更推荐。
- 粉丝: 2
- 资源: 945
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一个利用Java编写的,基于swing组件的连连看小游戏.zip
- 一个简易的对对碰游戏软件,运用Java、Java FX技术.zip
- 一个基于JAVA的类魔塔小游戏 a Java based MagicTowerlike game.zip
- 基于java多线程的一款小游戏.zip学习资料
- jsoniter (json-iterator) 是一款快速灵活的 JSON 解析器,可用 Java 和 Go 编写.zip
- 基于Java Swing实现的飞机大战游戏.zip
- 基于Java swing的拼图游戏,两种玩法(数字和图片).zip
- 基于java swing开发的小游戏.zip
- 动物位移小游戏Java实现,强行使用上了SQLite和MyBatis.zip
- 叠罗汉游戏,安卓java实现,自定义Framlayout,属性动画.zip