【发布时间】:2019-11-12 16:32:46
【问题描述】:
我正在做一个代码挑战,我试图将排序后的数组中的每个数字与另一个数字进行比较,因为它们无法匹配。我无法完成这个挑战,因为即使我的控制台日志在我在 for 循环中使用它之前正确打印了排序后的数组,一旦我在 for 循环中使用它,数组似乎会保留其原始(未排序)顺序。代码如下:
function minMinMax(array) {
let minAbsent = 0
// sort the array from smallest to largest
let smallestToLargest = array.sort((a, b) => a - b)
console.log(smallestToLargest)
const smallest = smallestToLargest[0]
// sort the array from largest to smallest
let largestToSmallest = array.sort((a, b) => b - a)
const largest = largestToSmallest[0]
// use second smallest number as starting point for loop, then after each number check
// to see if that number is in the array, if not then add the value to our array
for (i = 1, j = smallestToLargest[1]; i < smallestToLargest.length; i++, j++) {
if (j !== smallestToLargest[i]) {
minAbsent = j
}
console.log(smallestToLargest[i])
console.log('this is the min absent ' + minAbsent)
}
return [smallest, minAbsent, largest]
}
当第二个 console.log 打印出来时,它会读回给定的数组(使用原始的数字顺序,而不是排序的顺序)。那么是什么给了?
【问题讨论】:
-
能否创建一个 sn-p 以便我们运行并检查结果?
-
另外,您知道在stackoverflow 中您必须将正确答案标记为“正确答案”,对吧?您的所有问题实际上都有任何正确答案。
-
sort方法 mutates 一个数组。所以最后smallestToLargest和largestToSmallest引用同一个数组 -
帮自己一个忙,定义 i 和 j
-
这个测试用例/结果是什么?
标签: javascript arrays sorting numbers