作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编写一个名为compareArrays()的函数,它接受两个数组(每个数组的长度可以是任意数字) 并将这两个数组的第一个元素按升序写入页面。 它还按降序写入这两个数组的最后一个元素。我可以在我的代码中纠正什么?哪里有问题?前 4 个元素应升序,后 4 个元素应降序。
function compareArrays(y, z) {
for (x = 0; x < y.length; y++) {
Array.sort((Function(y, z) {
return z - y
});
}
for (p = 0; p < z.length; z++) {
Array.sort((function(y, z) {
return y - z
})
}
}
var one = [10, 20, 30, 40, 50, 60, 70, 80];
var two = [60, 70, 80, 90, 100, 110, 120, 130];
最佳答案
只显示原始数组的一半升序和一半降序的问题是,输出将是 80, 70 ,60 50, 10, 20, 30, 40,,因为当数组得到消息开始按降序排序,它将把 50 及以上的所有数字放在 10 20 30 40 之前,因为它更高,需要先排。
因此,要获得 10, 20, 30, 40, 80, 70, 60, 50 的输出,您可以将数组拆分为 2 个新数组,然后对它们进行排序,然后再次将它们组合在一起,如下所示:
function sortArrays(a) {
//slices the value of the passed in array in half, and makes 2 new arrays of it
var arrayLength1 = a.length;
var arrayHalf = arrayLength1 / 2;
var firstHalf = a.slice(0,arrayHalf);
var secondHalf = a.slice(arrayHalf);
// sorts one array ascending and the other descending
firstHalf.sort(ascendingFunction);
secondHalf.sort(descendingFunction);
//combines together the 2 arrays, already sorted one ascending and one descending
var newSortedArray = firstHalf.concat(secondHalf);
alert(newSortedArray); // the output you want
}
function ascendingFunction(a,b){
return a - b
}
function descendingFunction(a,b){
return b - a
}
var one = [10, 20, 30, 40, 50, 60, 70, 80];
var two = [60, 70, 80, 90, 100, 110, 120, 130];
现在您可以调用该函数并传入您想要的任何数组,例如:
sortArrays(one);
sortArrays(two);
关于javascript - 按降序和升序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563332/
我是一名优秀的程序员,十分优秀!