На данный вопрос уже ответили:
Всем привет такая проблемма, не могу понять где ошибка в моём коде.
Задача заключается в том, что нужно вернуть массив, состоящий только из неуникальных элементов данного массива. Мой код работает но почему-то не доконца правильно.
function nonUniqueElements(array) {
var new_array = [];
// var count = 0;
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array.length; j++)
if (array[i] !== array[j]) {
array.splice(array[i], 1);
return array;
}
}
return array;
}
console.log(nonUniqueElements([1, 2, 3, 1, 3]));
console.log(nonUniqueElements([1, 2, 3, 4, 5]));
console.log(nonUniqueElements([5, 5, 5, 5, 5]));
console.log(nonUniqueElements([10, 9, 10, 10, 9, 8]));
Если посмотреть в консоль то 1 и 3 -й варианты получаются правильно, но остальные нет.
Всё немного сложнее чем кажется, вы допустили много ошибок, во первых у вас удаляется один элемент, после которого цикл завершается возвратом массива, во вторых вы удаляете элемент с неправильной позиции используя значение array[i]
, вместо i
, также при удалении элемента из массива, нужно учитывать, что индексы сдвигаются, поэтому необходимо вернуть индекс на один назад.
Вот решение, если текущий элемент единственный, то он удаляется:
function nonUniqueElements(array) {
for (var i = 0; i < array.length; i++) {
if(array.filter(item => item == array[i]).length == 1){
array.splice(i, 1);
--i;
}
}
return array;
}
console.log(nonUniqueElements([1, 2, 3, 1, 3]));
console.log(nonUniqueElements([1, 2, 3, 4, 5]));
console.log(nonUniqueElements([5, 5, 5, 5, 5]));
console.log(nonUniqueElements([10, 9, 10, 10, 9, 8]));
function nonUniqueElements(array) {
var counts = {};
array.forEach(item => counts[item]? counts[item]++ : counts[item] = 1);
return array.filter(item => counts[item] > 1);
}
console.log(nonUniqueElements([1, 2, 3, 1, 3]));
console.log(nonUniqueElements([1, 2, 3, 4, 5]));
console.log(nonUniqueElements([5, 5, 5, 5, 5]));
console.log(nonUniqueElements([10, 9, 10, 10, 9, 8]));
function nonUniqueElements(array) {
return array.filter((el, i, arr) => arr.indexOf(el) != arr.lastIndexOf(el));
}
console.log(nonUniqueElements([1, 2, 3, 1, 3]));
console.log(nonUniqueElements([1, 2, 3, 4, 5]));
console.log(nonUniqueElements([5, 5, 5, 5, 5]));
console.log(nonUniqueElements([10, 9, 10, 10, 9, 8]));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть 2 путевые точки и некоторое количество транзитных точекЭти точки формируют маршрут
мне необходимо нажимая на ссылку, создавать программно окно в которое должна загружаться картинка, на другую ссылку ещё картинка и того уже...
Это окно сделано на основе JampPanel на JavaScript http://forummybb
Как вывести картинки с какой нибудь одной записи вк?