Javascript / jQuery Получить индекс элемента массива из позиции / индекса элемента

0

Я знаю, что этот вопрос немного странный, но вот пример:

Это массив:

mesreponses = ["10700#NB - Purple#1#0", "10699#NB - Nude#1#0", "10698#NB - Navy#1#0", "10697#NB - Marple#1#0", "10696#NB - Grey-Melange#1#0", "10695#NB - Brown-Melange#1#1", "10701#3-6M - Brown-Melange#1#0", "10706#3-6M - Purple#1#0", "10705#3-6M - Nude#1#0", "10704#3-6M - Navy#1#0", "10703#3-6M - Marple#1#0", "10702#3-6M - Grey-Melange#1#0", "10707#9-12M - Brown-Melange#1#0", "10712#9-12M - Purple#1#0", "10711#9-12M - Nude#1#0", "10710#9-12M - Navy#1#0", "10709#9-12M - Marple#1#0", "10708#9-12M - Grey-Melange#1#0", "10713#18-24M - Brown-Melange#1#0", "10718#18-24M - Purple#1#0", "10717#18-24M - Nude#1#0", "10716#18-24M - Navy#1#0", "10715#18-24M - Marple#1#0", "10714#18-24M - Grey-Melange#1#0"]

Вот что мне нужно сделать: получить позицию массива любого желаемого элемента, такого как s_attrs = "NB - Purple" - он должен вернуть 0, при поиске "NB - Gray-Melange" он должен вернуть 1 и так далее.

То, что мне удалось сделать до сих пор: получить ИНДЕКС элемента в массиве, т.е.

console.log(String(mesreponses).indexOf(s_attrs));

Поэтому я просто получаю ИНДЕКС (т.е. Для первого - 6, второй 28 и т.д.). Можно ли использовать индекс для получения индекса массива Array? т.е. месрепоны [0], месрепоны [1], месрепоны [2] и т.д.

Или я просто хочу сделать что-то похожее на jQuery.inArray(s_attrs, mareponse), но это НЕ работает, потому что он ищет только ТОЧНЫЕ МАТЧИ.

Могу ли я что-нибудь сделать, пожалуйста?

Благодарю!

Теги:

2 ответа

3
Лучший ответ

Для этого требуется простой цикл над массивом:

function indexOfPartial(array, value) {
    for (var i = 0; i < array.length; i++) {
        if (array[i].indexOf(value) >= 0) {
            return i;
        }
    }
    return -1;
}

Который вы можете назвать:

var index = indexOfPartial(mesreponses, 'NB - Nude');

http://jsfiddle.net/r57GN/

2

просто перебирайте его:

for (i = 0; mesreponses[i]; i++) {
  if (mesreponses[i].indexOf(s_attrs) >= 0) return i;
}
return -1;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню