Javascript在数组中搜索值并获取其密钥

sho*_*amh 14 javascript arrays search

我想创建一个像这样工作的函数:

function arraySearch(array, valuetosearchfor)
{
// some code
}
Run Code Online (Sandbox Code Playgroud)

如果它在数组中找到值,它将返回键,在那里找到值.如果有多个结果(多个键),或者根本没有结果(找不到任何结果),则该函数将返回FALSE.

我找到了这段代码:

function arraySearch(arr,val) 
        {
            for (var i=0; i<arr.length; i++)
                {
                    if (arr[i] == val) 
                    {                    
                        return i;
                    }
                    else 
                    {
                        return false;
                    }
                }
        }
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

var resultofarraycheck = arraySearch(board, chosen);
                if (resultofarraycheck === false) 
                {
                       document.getElementById(buttonid).value;
                       chosen = 0;
                }
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.当它应该找到某些东西时,它返回false而不是键(i).

我该如何解决这个问题,或者我做错了什么?

谢谢,如果我的英语不够清楚,我很抱歉.

The*_*net 21

function arraySearch(arr,val) {
    for (var i=0; i<arr.length; i++)
        if (arr[i] === val)                    
            return i;
    return false;
  }
Run Code Online (Sandbox Code Playgroud)


Ano*_*oop 13

您可以使用indexOf来获取关键的 jsfiddle

if(!Array.prototype.indexOf){
    Array.prototype.indexOf = function(val){
        var i = this.length;
        while (i--) {
            if (this[i] == val) return i;
        }
        return -1;
    } 
}

    var arr = ['a','b','c','d','e'];

    var index = arr.indexOf('d'); // return 3
Run Code Online (Sandbox Code Playgroud)

  • @shohamh不,不是.他提供了不好的例子,但它可以按你的意愿工作.`['a','b','c'].indexOf('a')`将返回0. (2认同)