Javascript-获取数组元素的位置

Javascript - Get position of the element of the array

本文关键字:位置 数组元素 获取 Javascript-      更新时间:2023-09-26

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

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

谢谢。

考虑使用indexOf,它返回元素在数组中基于0的位置。

例如

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

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

jQuery为yout提供了"inArray"功能,类似于PHP:
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]);

正如一些答案所指出的,较新浏览器中的数组具有indexOfmapforEach等方法,这些方法非常方便,可以避免编写大量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)