从排序数组中删除重复项(不同的最终结果)

Remove Duplicates from Sorted Array (different final results)

我是编程和学习 Javascript 的新手,通过做 leetcode.com 中的一些练习。 我想写一段代码来删除排序数组中的重复项。 当我在函数末尾使用“console.log”来显示最终结果时,我得到了预期的结果。但是,当我使用 return (具有相同的变量)时,我得到了错误的结果。谁能告诉我,我哪里出错了? 这是我的代码:

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function (nums) {
  var newNums = []

  if (nums.length == 0) {
    newNums = []
  }

  for (var i = 0; i < nums.length; i++) {

    var curr = nums[i]
    var next = nums[i + 1]
    if (curr != next) {
      newNums.push(curr)
    }
  }

  console.log(newNums)
  return newNums
};

这是一张包含代码和结果的图片。绿色箭头表示 (console.log) 的输出,红色箭头表示 (return) 的输出。 先感谢您!

以下是如何删除 Javascript

中任何(已排序或未排序)数组中的重复项
const removeDuplicates = (orignalArray) =>{
  let allUniqueArray=[];
  let repWordArray=orignalArray.slice();
 
  const removeAnElement=(array, elem)=>{
    const index = array.indexOf(elem);
    if (index > -1) {
      array.splice(index, 1);
    }
    return array;
  }
 
  orignalArray.forEach(elem=>{
    if(!allUniqueArray.includes(elem)){
      allUniqueArray.push(elem);
      repWordArray=removeAnElement(repWordArray,elem)
    }
  });
  return allUniqueArray;
};

let array=[1,2,3,3,4,5,6,6,7];
const uniqueArray = removeDuplicates(array);
console.log('array: ',array);
console.log('uniqueArray: ',uniqueArray);

一种略有不同的方法,它保留对数组的原始对象引用并通过复制和调整数组的长度来改变数组。

这种方法不需要另一个数组。

它基本上检查前驱是否不等于实际项目并将项目复制到新索引j。此变量具有数组的最终长度并截断不需要的数组其余部分。

function removeDuplicates(array) {
    let j = 0;
    for (let i = 0; i < array.length; i++) {
        if (array[i - 1] !== array[i]) array[j++] = array[i];
    }
    array.length = j;
    return array;
}

console.log(removeDuplicates([0, 1, 1, 2, 2, 2, 2, 3, 4, 5, 5]));