Javascript - Получить позицию элемента массива

Например, переменная с именем arrayElements типа массива содержит [1,2,3,4].

Как получить позицию, которая имеет значение "3" в переменной массива, кроме использования цикла?

спасибо.

Ответы

Ответ 1

рассмотрим использование indexOf, он возвращает позицию элемента в массиве на основе 0.

например.

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

Обратите внимание, что этот метод недоступен в IE 8 и ниже.

Ответ 2

jQuery предоставляет вам функцию "inArray", похожую на PHP:

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

Если вы уже используете jQuery в своем проекте, это будет путь! jQuery использует indexOf (самое быстрое решение), если это возможно, и возвращается к решению на основе цикла, если нет.

Ответ 3

Или просто используйте цикл 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]);

Ответ 4

Как уже отмечалось в некоторых ответах, массивы в новых браузерах имеют такие методы, как indexOf map и forEach, которые очень удобны для того, чтобы не писать много циклов for-loops.

Если вам нужно поддерживать старые среды без этих функций, я настоятельно рекомендую использовать библиотеку (или написать свой собственный) для реализации этих очень распространенных операций с массивами (вроде того, как предложил софт).

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 имеют некоторые из этих функций.