题目
请填充代码,使mySort()能使传入的参数按照从小到大的顺序显示出来。
function mySort() {
var tags = new Array();//使用数组作为参数存储容器
//请补充你的代码
return tags;//返回已经排序的数组
}
var result = mySort(50,11,16,32,24,99,57,100);/传入参数个数不确定
console.info(result);//显示结果
分析
这道题目考察的知识点有两个,一个是arguments
局部变量的应用,一个是排序算法的考察,当然我们这里可以直接应用Array.protytype.sort()
进行排序,但是使用``sort()进行排序的时候,有一点要特别注意,当sort()
没有参数的时候,那么默认是通过ASCII字符
进行排序的。
比如:
出现上面的原因,也正验证了sort()的排序是基于ASCII码值的,所以,我们应该添加一个比较函数(回调函数)。
var arr = [1,2,21,101,109,124];
//升序
arr.sort(function(a,b){
retun a-b;
});
//降序
arr.sort(function(a,b){
retun b-a;
});
再次输出,就可以得到完整的答案。
完整代码
function mySort() {
var tags = new Array();//使用数组作为参数存储容器
for(let i=0;i<arguments.length;i++){
tags.push(arguments[i]);
}
// tags.sort();使用sort()排序会按照ASCII值进行排序
// 需要指定一个比较函数,才能完成数字数组的排序
tags.sort(function(a,b){
return a-b;
});
return tags;//返回已经排序的数组
}
var result = mySort(50,11,16,32,24,99,57,100);//传入参数个数不确定
console.log(result);//显示结果