Как избежать доступа к одному и тому же индексу, когда большинство значений массива совпадают?Взглянуть - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь решить проблему, связанную с алгоритмами JavaScript.Здесь проблема.Я хочу получить доступ к индексу значения массива методом indexOf ().Но я хочу знать, как можно избежать того же индекса, когда большинство значений в массиве одинаковы.Возьмем пример:

let arr1 = [0, 0, 0, 0, 1, 1];

Теперь, как вы можете видеть, большинство значений совпадают, и метод indexOf ищет индекс данного значения в массиве.

arr1.indexOf(arr1[0]); // 0 arr1.indexOf(arr1[5]); // 5

Итак, он вернет 0 как систему, но когда я собираюсь двигаться дальше, чтобы получить доступ к следующему значению.Как:

arr1.indexOf(arr1[1]); // 0 arr1.indexOf(arr1[6]); // 5

Возвращается так же, как и раньше.Но я хочу следующий индекс вместо того же самого.Пример:

arr1.indexOf(arr1[1]); // 1

Он должен возвращать 1, поскольку 0 уже возвращен один раз.Итак, каково решение этого?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Метод indexOf(value) возвращает позицию первого вхождения указанного значения в строке.

Вы можете использовать indexOf(value, start).Здесь start - позиция для начала поиска

0 голосов
/ 15 февраля 2019

indexOf имеют второй параметр, начальный индекс.

Вы можете сделать:

let arr1 = [0, 0, 0, 0, 1, 1];
console.log(arr1.indexOf(arr1[1], 1)); // 1

Редактировать

Если вы хотите, чтобы все индексы имели определенное значение, например 0, вы можете сделать это:

let arr1 = [0, 0, 0, 0, 1, 1];

function getAllIndexes(arr, val) {
  var indexes = [],
    i = -1;
  while ((i = arr.indexOf(val, i + 1)) != -1) {
    indexes.push(i);
  }
  return indexes;
}

var indexes = getAllIndexes(arr1, 0);

console.log(indexes);

С помощью этого скрипта вы получаете массив со всеми индексами значения в массиве.

Ссылка на скрипт: https://stackoverflow.com/a/20798567/3083093

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...