本题我使用的是sort(compare)方法,由于sort比较的是字符串的大小,不能直接用于数组,所以需要在sort方法中传一个方法参数用于排序,这个比较函数需要有两个参数传值,用于比较,好让我们制定哪个值位于哪个值的前面,如果第一个参数应该位于第二个参数之前,则返回一个负数,相等为0。
function mySort(arr) {
var tags = new Array();//使用数组作为参数存储容器
tags = arr;
tags.sort(function(value1,value2){
if(value1 > value2){
return 1;
}else if(value1 < value2){
return -1;
}else{
return 0;
}
});
return tags;//返回已经排序的数组
}
var result = mySort([50,11,16,32,24,99,57,100]);//传入参数个数不确定
console.info(result);//显示结果
给大家看一下牛客参考答案:
function mySort() {
var tags = new Array();
for(var i = 0;i < arguments.length;i++) {
tags.push(arguments[i]);
}
tags.sort(function(compare1,compare2) {
return compare1- compare2;
});
return tags;
}
var result = mySort(50,11,16,32,24,99,57,100);
console.info(result);
参考答案首先是arguments[i],因为题目没有传参数,所以这里使用arguments数组,表示当前方法的参数列表,从arguments数组长取值就可以获取到当前传进来的值,并将它们一一推入tags方法中,然后使用了一种更简便的比较方法来告诉sort如何进行排序,原理与上面相同,从小到大排序是compare1-compare2 ,如果要换成从大到下就compare2-compare1。
相比较而言,我还是没有使用更简便的方法思虑的那么周全,希望自己记住这次教训,以后可以多思考一些。