javascript - 我用数量=5 和 arr=[0,0,0,0,0] 调用了 getFewMaxNumbers。为什么我从 [0,0,0,0,0] 得到数组?
问题描述
我用数量=5 和 arr=[0,0,0,0,0] 调用了 getFewMaxNumbers。为什么函数返回 [0,0,0,0] 数组。我不明白。请帮帮我!
function getMaxIndexOfArr(a) {
let index=0;
for(let i=1; i<a.length; i++) {
if(a[i] !== "" && a[i] > a[index]) index=i;
}
return index;
}
let getFewMaxNumbers = (arr, quantity) => getFewMinOrMaxNumbers(arr, quantity, "max");
let getFewMinOrMaxNumbers = (arr, quantity, type) => {
let indexes = [];
for(let i=0; i<quantity; i++) {
if(type === "min") {
let newIndex = getMinIndexOfArr(arr);
if(newIndex !== undefined) {
arr[newIndex] = "";
indexes.push(newIndex);
}
}
else if(type == "max") {
let newIndex = getMaxIndexOfArr(arr);
if(newIndex !== undefined) {
console.log('Eheeee!!', arr[newIndex])
arr[newIndex] = "";
indexes.push(newIndex);
}
}
}
return indexes
}
getFewMaxNumbers([0,0,0,0,0], 5);
解决方案
因此,该功能存在一些问题getMaxIndexOfArr
。
- 循环从这
1
意味着它总是跳过第一项。 index
初始化为0,我猜这是为了解决第一个问题,但是当数组充满零时,比较器a[i] > a[index]
始终为假a[1]=0
,a[0]
最终变为“”;0
不大于""
。
一种可行的方法是:
function getMaxIndexOfArr(a) {
let index=undefined;
for(let i=0; i<a.length; i++) {
if(a[i] === "") continue;
if (index === undefined) {
index = i;
} else if (a[i] > a[index]) {
index = i;
}
}
return index;
}
let getFewMaxNumbers = (arr, quantity) => getFewMinOrMaxNumbers(arr, quantity, "max");
let getFewMinOrMaxNumbers = (arr, quantity, type) => {
let indexes = [];
for(let i=0; i<quantity; i++) {
if(type === "min") {
let newIndex = getMinIndexOfArr(arr);
if(newIndex !== undefined) {
arr[newIndex] = "";
indexes.push(newIndex);
}
}
else if(type == "max") {
let newIndex = getMaxIndexOfArr(arr);
if(newIndex !== undefined) {
arr[newIndex] = "";
indexes.push(newIndex);
}
}
}
return indexes
}
console.log(getFewMaxNumbers([0,0,0,0,0], 5));
推荐阅读
- python - 如何加快我的 Flask API 的速度,它有一个获取并行请求的慢速方法?
- ssl - Nginx certbot SSL 不适用于 Cloudflare
- javascript - 如何更改数组中项目的位置?
- python - 如何将 groupby.first() 与变换函数一起使用
- c# - 如何在 C# 中检索 macOS 上已安装的打印机
- c - 为什么我在使用 extern 时可以用错误的签名调用我的函数?
- java - RecyclerView GridLayoutManager:每个项目计数的单独布局
- r - 如何将逆高斯分布拟合到我的数据中,最好使用 fitdist {fitdistrplus}
- vb.net - 使用 vb.net 打印包含图片框、标签和文本框的两个或多个页面的可滚动面板
- ruby-on-rails - 删除 add_column 文件后 Heroku 数据库中缺少列