如何获取没有重复的数字?

7 浏览
0 Comments

如何获取没有重复的数字?

我想要得到只有一个重复的数字:

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]

0
0 Comments

问题的出现原因是原始数组中出现了重复的数字,而需要获取一个没有重复数字的数组。

解决方法是使用循环遍历原始数组,通过比较相邻数字的值来判断是否重复。如果发现重复数字,就从数组中删除重复的数字,直到遍历完整个数组。

以下是解决方法的代码实现:

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);

运行以上代码,将输出不含重复数字的数组。

0
0 Comments

问题的出现原因是需要从给定的数组中获取不重复的数字,并且需要修改原始数组,但是目前的解决方法只是将结果存储在另一个数组中,并没有修改原始数组。

为了解决这个问题,可以使用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]

这样,就可以获取不重复的数字并且修改原始数组了。

0