我遇到了我的一个程序问题,似乎无法解决问题。基本上,我希望在每个元素上存储一个包含多种数据类型的数组。我想创建一个可以通过bubblesort排序的函数,它根据我要排序的内容将另一个比较函数作为参数。
function Autos(year) {
this.year = year;
}
var autos = [
new Autos(1995),
new Autos(1990),
new Autos(2000),
new Autos(2010),
new Autos(2005),
new Autos(2008)
];
function Sorty(sortingMethod, array) {
for (let i = 0; i < array.length; i++) {
for (let j = 0; j < (array.length - i - 1); j++) {
if (0 == sortingMethod(array[j], array[j + 1]));
// if(array[j].year < array[j+1].year) //Sort works using this
{
let temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
console.log(array[0].year, array[1].year, array[2].year, array[3].year, array[4].year, array[5].year);
}
function sortByYear(x, y) {
if (x.year < y.year) {
return 0;
} else {
return 1;
}
}
Sorty(sortByYear, autos);
如果我在不使用附加排序功能的情况下排序,那么排序就像预期的那样。但是,当我使用排序功能时,数据不按顺序排列。我怀疑这可能是一个封闭问题,但我对这个话题感到不舒服。任何输入将不胜感激。
使用排序功能,结果是:
2008 2005 2010 2000 1990 1995
没有排序功能,结果是:
2010 2008 2005 2000 1995 1990
发布于 2018-08-29 13:58:02
这是; if语句上的拼写错误。
https://stackoverflow.com/questions/-100002480
复制相似问题