function nonUniqueElements(data) {
var duplicates = [];
var compArr = data;
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < compArr.length; j++) {
console.log('Comparing ' + data[i] + ' to ' + compArr[j]);
if (data[i] === compArr[j]) {
console.log('Found match first pass');
console.log(data.indexOf(i), compArr.indexOf(j));
if (data.indexOf(i) !== compArr.indexOf(j)) {
console.log('Also passes second pass')
console.log('Pushing ' + data[i] + ' to new array')
duplicates.push(data[i]);
console.log(duplicates);
}
}
}
console.log('End of run through');
}
return (duplicates);
}
console.log(nonUniqueElements([5, 5, 5, 5]));
Я пытаюсь вернуть все неуникальные значения в массиве.Я продублировал массив и запускаю вложенный цикл для сравнения копии с оригиналом.
Когда он находит совпадение (в данном случае каждый раз), есть вторая проверка, чтобы убедиться, что только значения вразличные индексы помещаются в новый массив.
Я положил console.log () s, чтобы помочь мне пройти через программу.Даже когда console.log (data.indexOf (i), compArr.indexOf (j)) печатает разные значения, блок кода в if (data.indexOf (i)! == compArr.indexOf (j)) оператор не выполняется.
Есть идеи?