Ответ 1
рассмотрим использование indexOf
, он возвращает позицию элемента в массиве на основе 0.
например.
[1,2,3,4].indexOf(3); // produces 2
Обратите внимание, что этот метод недоступен в IE 8 и ниже.
Например, переменная с именем arrayElements типа массива содержит [1,2,3,4].
Как получить позицию, которая имеет значение "3" в переменной массива, кроме использования цикла?
спасибо.
рассмотрим использование indexOf
, он возвращает позицию элемента в массиве на основе 0.
например.
[1,2,3,4].indexOf(3); // produces 2
Обратите внимание, что этот метод недоступен в IE 8 и ниже.
jQuery предоставляет вам функцию "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]);
Как уже отмечалось в некоторых ответах, массивы в новых браузерах имеют такие методы, как 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 имеют некоторые из этих функций.