gpt4 book ai didi

javascript - 了解获取数组中第二低和第二高的值

转载 作者:行者123 更新时间:2023-11-29 16:08:22 26 4
gpt4 key购买 nike

大家好,Stack-ers,

如果之前有人问过这个问题或者它看起来很初级(我只是一个 Javascript 新手),我必须请你原谅。

I have been doing w3c js challenges lately: 编写一个 JavaScript 函数,该函数将获取存储的数字数组并找到第二小和第二大的数字。

这是我的答案:

var array = [3,8,5,6,5,7,1,9];
var outputArray = [];

function arrayTrim() {
var sortedArray = array.sort();
outputArray.push(sortedArray[1],array[array.length-2]);
return outputArray;
}

arrayTrim();

这是他们提供的答案:

function Second_Greatest_Lowest(arr_num) {  
arr_num.sort(function(x,y) {
return x-y;
});

var uniqa = [arr_num[0]];
var result = [];

for(var j=1; j < arr_num.length; j++) {
if(arr_num[j-1] !== arr_num[j]) {
uniqa.push(arr_num[j]);
}
}

result.push(uniqa[1],uniqa[uniqa.length-2]);
return result.join(',');

}

alert(Second_Greatest_Lowest([1,2,3,4,5]));

我知道 for 循环一直运行到输入的长度,但我不明白 for 循环中嵌套的 if 语句。解决方案似乎还有很长的路要走。

谢谢!

最佳答案

您的答案对于 f.e. 等输入不正确。 [3,8,5,6,5,7,1,1,9]。您提出的解决方案返回 1 作为此处倒数第二小的数字——而实际上它应该是 3

网站建议的解决方案考虑到了这一点——这就是循环内的 if 的用途,它检查当前数字是否与前一个数字相同。如果是这种情况,它将被忽略。这样,每个数字都会出现一次,这反过来又允许从排序数组中盲目地挑选第二个元素,实际上让它成为倒数第二小的数字。

It seems like a long way around to the solution

您采取了捷径,无法正确处理所有边缘情况;-)

关于javascript - 了解获取数组中第二低和第二高的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35037328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com