var removeDuplicates = function(nums) {
for(let i=0; i<nums.length; i++){
for(let j=i+1; j<nums.length; j++){
if (nums[i]===nums[j]){
nums.splice(i,1);
}
}
}
};
Это мой код для удаления дубликатов, он работает для чисел, которые повторяются дважды, но не работает для чисел, которые повторяются более 2. Может ли кто-нибудь сказать мне, что здесь не так? Я хочу решить эту проблему, используя только циклы for. Ввод: 0,0,1,1,1,2,2,3,3,4 Выход: 0,1,1,2,3,4 Ожидаемое: 0,1,2,3,4
Но ошибка в вашем коде заключается в том, что внутренний цикл также должен начинаться с 0, а не с i+1.
const removeDuplicates = function(nums) {
for (let i = nums.length - 1; i >= 0; i--) {
for (let j = 0; j < i; j++)
if (nums[j] === nums[i]) {
nums.splice(i, 1);
break;
}
}
};
let arr = [0,0,1,1,1,2,2,3,3,4];
removeDuplicates(arr);
console.info(arr);
Поиск уникальных элементов массива намного проще сделать с помощью Set:
const uniqueValues = nums => [...new Set(nums)];
console.info(uniqueValues([0,0,1,1,1,2,2,3,3,4]));
Я бы использовал Set или объектные ключи, чтобы получить уникальные значения.