参数被覆盖

Parameter getting overwritten

第一个问题...大家好! 所以,我正在做一个函数,我应该从数组中获取更高和更低的数字,我得到了这个代码:

const arraySort = (numbers) =>{
    if (!numbers) return console.log('No numbers');
    if (Array.isArray(numbers) === false) return console.log('No array!');
    if (numbers.includes(undefined)) return console.log('undefined in the array');
    let newnumbers=numbers.sort();
    
    let newArray = [newnumbers.reverse().pop(),newnumbers.pop()];
    console.log(`The higher and lower number from the array [${numbers}] is [${newArray}]`);
}

而我得到的是 'The higher and lower number from the array [4] is [-5,3]'。为什么我的 numbers 参数被覆盖了?我尝试创建 newnumbers 变量以使用 .pop() 和 .sort() 方法,但原始变量仍然被覆盖,我真的不知道为什么。有人可以给我一些启发吗? 提前致谢!

reverse()sort() 修改原始数组。所以在这里我取排序数组的第一个和最后一个索引。

const arraySort = (numbers) => {
  if (!numbers) return console.log('No numbers');
  if (Array.isArray(numbers) === false) return console.log('No array!');
  if (numbers.includes(undefined)) return console.log('undefined in the array');
  numbers.sort();

  let newArray = [numbers[0], numbers[numbers.length -1]];
  console.log(`The higher and lower number from the array [${numbers}] is [${newArray}]`);
}

arraySort([4,5,1,2]);

对原数组进行排序和反向修改。如果您不想使用扩展运算符改变它们,请改为创建一个深拷贝。我更新了以下功能:

var arraySort = (numbers) =>{
    if (!numbers) return console.log('No numbers');
    if (Array.isArray(numbers) === false) return console.log('No array!');
    if (numbers.includes(undefined)) return console.log('undefined in the array');
    let newnumbers = [...numbers]
    newnumbers.sort();
    console.log(newnumbers)
    let newArray = [newnumbers[newnumbers.length - 1],newnumbers[0]];
    console.log(`The higher and lower number from the array [${numbers}] is [${newArray}]`);
    }

代码的最后一部分是修改原始数组:

sort(), reverse(), pop()都影响原数组

你应该从复印开始。

const arraySort = (numbers) =>{
    if (!numbers) return console.log('No numbers');
    if (Array.isArray(numbers) === false) return console.log('No array!');
    if (numbers.includes(undefined)) return console.log('undefined in the array');
    let newnumbers=[...numbers];
    newnumbers.sort();
    
    let newArray = [newnumbers[newnumbers.length-1],newnumbers[0]];
    console.log(`The higher and lower number from the array [${numbers}] is [${newArray}]`);
}

arraySort([1,2,6,3,5,4]);

pop() 删除数组元素,因此在返回最大和最小元素时最好使用索引。