就是判断一个元素是否存在于数组中的函数,既然js里string都有indexOf函数,为什么不在Array对象里设置一个这样的函数呢,其实就用indexOf这个思想挺好的,不知道制定JS标准的人是基于什么考虑,把这样一个如此常用的功能没考虑在内的。
3 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
jQuery中有类似的函数:
它的代码如下:
function inArray(needle, haystack) { var length = haystack.length; for(var i = 0; i < length; i++) { if(haystack[i] == needle) return true; } return false; }
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
如果你的数组里都是纯数字的话,那么告诉你一个比较简便的方法
// 比如判断2312是否在这个数组中('|' + [2312,3331,423456].join('|') + '|').indexOf('|' + 2312 + '|')
温温酱
TA贡献1752条经验 获得超4个赞
indexOf在ECMAScript 5th中是有的,
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { "use strict"; if (this == null) { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; if (len === 0) { return -1; } var n = 0; if (arguments.length > 1) { n = Number(arguments[1]); if (n != n) { // shortcut for verifying if it's NaN n = 0; } else if (n != 0 && n != Infinity && n != -Infinity) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } } if (n >= len) { return -1; } var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); for (; k < len; k++) { if (k in t && t[k] === searchElement) { return k; } } return -1; }
其实不止indexOf,lastIndexOf,filter,forEach,every,map,some等等在ECMAScript 5th 中都有实现。
添加回答
举报
0/150
提交
取消