算法题1:arguments和sort()方法的知识点考察

题目

请填充代码,使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字符进行排序的。
比如:
算法题1:arguments和sort()方法的知识点考察
出现上面的原因,也正验证了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);//显示结果
上一篇:BISTML-CRF项目源码


下一篇:MongoDB实战篇:高级查询----$elemMatch与aggregate