请填充代码,使mySort()能使传入的参数按照从小到大的顺序显示出来。

本题我使用的是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。

相比较而言,我还是没有使用更简便的方法思虑的那么周全,希望自己记住这次教训,以后可以多思考一些。

猜你喜欢

转载自blog.csdn.net/qq_37800886/article/details/81182885