繁体   English   中英

Javascript - 获取数组元素的位置

[英]Javascript - Get position of the element of the array

例如,名为arrayElements的数组类型的变量包含[1,2,3,4]。

除了使用循环之外,我如何获得数组变量中值为“3”的位置?

谢谢。

考虑使用indexOf ,它返回数组中元素的从0开始的位置。

例如

[1,2,3,4].indexOf(3); // produces 2

请注意,此方法在IE 8及更低版本中不可用。

jQuery为您提供了类似于PHP的“inArray”功能:

var a = [1,2,3,4];
console.log( jQuery.inArray(3, a) ); //returns 2

如果你已经在项目中使用了jQuery,那么这就是你要走的路! 如果可能,jQuery使用indexOf(最快的解决方案),如果没有,则返回基于循环的解决方案。

或者简单地使用for循环:

function getPosition(elementToFind, arrayElements) {
    var i;
    for (i = 0; i < arrayElements.length; i += 1) {
        if (arrayElements[i] === elementToFind) {
            return i;
        }
    }
    return null; //not found
}

getPosition(3, [1, 2, 3, 4]);

正如一些答案已经指出的那样,较新浏览器中的数组具有indexOf mapforEach等方法,这些方法非常便于避免编写大量for循环。

如果你需要支持没有这些功能的旧环境,我强烈建议你使用一个库(或者你自己编写一个)来实现那些非常常见的数组操作(类似于soc建议的那种)。

var arrayfn = (function(){
    var M = {};

    M.indexOf = function(array, item){ ... };

    M.contains = function(array, item){ return M.indefOf(array, item) !== -1; };

    M.map = function(array, callback){ ... };
}());

arrayfn.contains([1,2,3], 2);

最流行的JS框架应该已经拥有大部分内置的内置版本。 在我的脑海中,我记得Dojo,jQuery和Underscore有一些这样的功能,例如。

此示例仅演示可以使用map()返回数组的每个元素。 一旦我们拥有它,我们将检索数组中的元素索引:

function searchPosition(elementToFind, array) {
    return array.map(function(el) {
        return el;
    }).indexOf(elementToFind);
}

searchPosition(3, [1, 2, 3, 4]); // returns 2

奖金:

这不是OP问题的一部分,但是如果要检索满足特定条件的数组中第一个元素的位置,可以使用ES6中提供的findIndex()函数来完成:

var array = [101, 90, 104, 80];

function findFirstLessNumber(element) {
  return element < 100;
}

console.log(array.findIndex(findFirstLessNumber)); // returns 1 (the position of 90)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM