首页 > 解决方案 > 参数被覆盖

问题描述

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

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}]`);
}

我得到的是'数组 [4] 中的较高和较低的数字是 [-5,3]'。为什么我的numbers参数被覆盖?我尝试使用 .pop() 和 .sort() 方法创建newnumbers变量,但仍然会覆盖原始变量,我真的不知道为什么。有人可以给我一些启示吗?提前致谢!

标签: javascriptvariablesparameters

解决方案


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

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()删除数组元素,因此在返回最大和最小元素时最好使用索引。


推荐阅读