如何获取没有重复的数字?
如何获取没有重复的数字?
我想要得到只有一个重复的数字:
let results = [2, 2, 1, 2, 3, 3, 1] let pivot = 1 let cont = 0 let unitaries = [] for (var i = 0; i < results.length; i++) { if (pivot !== results[i + 1]) { pivot = results[i] if (cont === 0) { unitaries.push(results[i]) results.splice(i, 1); } cont++ } } console.log(unitaries)
我想要得到[1,2,1]
,但现在我只得到了[2]
。
问题的出现原因是原始数组中出现了重复的数字,而需要获取一个没有重复数字的数组。
解决方法是使用循环遍历原始数组,通过比较相邻数字的值来判断是否重复。如果发现重复数字,就从数组中删除重复的数字,直到遍历完整个数组。
以下是解决方法的代码实现:
const results = [2, 2, 1, 2, 3, 3, 1]; for (let i = 0; i < results.length;) { let j = i; while (j < results.length) { if (results[j] === results[i]) j++; else break; } if ((j - 1) > i) results.splice(i, j - i); else i++; } console.log(results);
运行以上代码,将输出不含重复数字的数组。
问题的出现原因是需要从给定的数组中获取不重复的数字,并且需要修改原始数组,但是目前的解决方法只是将结果存储在另一个数组中,并没有修改原始数组。
为了解决这个问题,可以使用Array.prototype.filter()方法来过滤掉重复的数字,并且在遍历时比较当前元素与前一个和后一个元素是否相同。然后,可以使用results.splice()方法将结果直接覆盖到原始数组中,实现修改原始数组的目的。
下面是修改后的代码示例:
let results = [2, 2, 1, 2, 3, 3, 1]; results = results.filter((n, i, array) => n !== array[i - 1] && n !== array[i + 1]); results.splice(0, results.length, ...results); console.log(results); // [1, 2, 1]
这样,就可以获取不重复的数字并且修改原始数组了。