为了账号安全,请及时绑定邮箱和手机立即绑定

各位有什么好办法来实现这个功能吗?求高手指点

各位有什么好办法来实现这个功能吗?求高手指点

守候你守候我 2023-04-13 11:07:03
就是判断一个元素是否存在于数组中的函数,既然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;
}


查看完整回答
反对 回复 2023-04-17
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

如果你的数组里都是纯数字的话,那么告诉你一个比较简便的方法

// 比如判断2312是否在这个数组中('|' + [2312,3331,423456].join('|') + '|').indexOf('|' + 2312 + '|')


查看完整回答
反对 回复 2023-04-17
?
温温酱

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 中都有实现。


查看完整回答
反对 回复 2023-04-17
  • 3 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信