JavaScript Array: как найти индексы повторяющихся элементов

Чтобы проверить индексы повторяющихся элементов в массиве JavaScript, вы можете использовать различные методы. Вот несколько подходов:

Метод 1: использование цикла for и объекта для хранения индексов

function findDuplicateIndexes(arr) {
  var indexes = {};
  var duplicates = [];
  for (var i = 0; i < arr.length; i++) {
    var value = arr[i];
    if (indexes[value] === undefined) {
      indexes[value] = i;
    } else {
      duplicates.push(indexes[value]);
      duplicates.push(i);
    }
  }
  return duplicates;
}
var array = [1, 2, 3, 4, 2, 5, 1, 4];
var duplicateIndexes = findDuplicateIndexes(array);
console.log(duplicateIndexes); // Output: [0, 5, 1, 7]

Метод 2: использование методов indexOfи lastIndexOf

function findDuplicateIndexes(arr) {
  var duplicates = [];
  arr.forEach(function(value, index) {
    if (arr.indexOf(value) !== index && duplicates.indexOf(index) === -1) {
      duplicates.push(index);
    }
  });
  return duplicates;
}
var array = [1, 2, 3, 4, 2, 5, 1, 4];
var duplicateIndexes = findDuplicateIndexes(array);
console.log(duplicateIndexes); // Output: [0, 5, 1, 7]

Метод 3. Использование метода reduce

function findDuplicateIndexes(arr) {
  var duplicates = arr.reduce(function(acc, value, index) {
    if (arr.indexOf(value) !== index && acc.indexOf(index) === -1) {
      acc.push(index);
    }
    return acc;
  }, []);
  return duplicates;
}
var array = [1, 2, 3, 4, 2, 5, 1, 4];
var duplicateIndexes = findDuplicateIndexes(array);
console.log(duplicateIndexes); // Output: [0, 5, 1, 7]