【发布时间】:2020-11-24 19:20:47
【问题描述】:
问题:编写一个 JavaScript 函数,该函数将获取存储的数字数组并找到第二小和第二大的数字。
不确定这个解决方案是如何工作的:
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(',');
}
我想我理解循环中发生了什么,但我不确定为什么当稍后将 uniqa[1] 推入结果数组时这是必要的。他们不是在执行相同的操作吗?
【问题讨论】:
-
我对您的代码在做什么感到非常困惑。您需要做的就是对数组进行排序,然后得到
array[1]和array[array.length - 2]。 -
@M-Chen-3 这是列出的解决方案。我也在努力理解它。
-
如果前一个数字与当前数字不同,则该循环似乎仅通过将数字添加到
uniqa来对排序列表进行重复数据删除。我想确保uniqa[1]与uniqa[0]不同(数组中的最后两个数字也是如此) -
@rickdenhaan 但是号码不会被推入两次吗? (一次来自循环,一次在循环外)
-
这个功能太可笑了????你确定作者知道他在做什么吗?感觉就像是排序然后删除重复项的混合。为什么它被推入同一个数组?不知道
标签: javascript arrays algorithm sorting