javascript - 参数被覆盖
问题描述
这里的第一个问题......大家好!所以,我正在做一个函数,我应该从一个数组中获取更高和更低的数字,我得到了这个代码:
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变量,但仍然会覆盖原始变量,我真的不知道为什么。有人可以给我一些启示吗?提前致谢!
解决方案
代码的最后一部分是修改原始数组:
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()
删除数组元素,因此在返回最大和最小元素时最好使用索引。
推荐阅读
- json - 使用 jq 根据出现在成员列表中的元素过滤 JSON 列表
- ios - 世博会 - 创建日历缺少源
- c++ - Qt Quick + CMake + 自定义 QObject 导致对“vtable”的未定义引用
- android - 即使在获得许可后,适用于 Android 8 的文件资源管理器也会崩溃
- c - How to silent the MP3 decoding process
- python - 您可以删除或替换 python 日志消息吗?
- node.js - 如何修复使用 node-soap 在 NodeJS 中调用 SOAP Web 服务的“属性 xmlns:wsse 无效”错误
- excel - 将 Excel 数据导出到 html 页面时 Excel 挂起
- r - 2组计数指标
- sql - SELECT - 行数过多