在没有内置方法的情况下按降序javascript对数组进行排序

时间:2017-04-14 21:36:59

标签: javascript sorting

我需要在javaScript中按降序排序一个简单的数组而不使用内置方法,它已经花了我太多时间......请帮助

function dscSort(array) {
    for (var i = 1; i < array.length; i++) {
        var tmp = array[i];
        for (var j = i - 1; j >= 0 && (array[j] < array[i]); j--) {
            array[j + 1] = array[j];
        }
        array[j + 1] = tmp;
    }
    return array;
}

2 个答案:

答案 0 :(得分:1)

方法是正确的。你刚刚在代码中遇到了一个小错误。而不是:

for (var j = i - 1; j >= 0 && (array[j] < array[i]); j--) {

这样做:

for (var j = i - 1; j >= 0 && (array[j] < tmp); j--) {

这是必要的,因为array[i]处的值可能会在第一次迭代时被array[i-1]覆盖,因此在下一次迭代中,您将看到错误的值。

答案 1 :(得分:0)

您可以自己创建一个,如下所示。 使用此语法

func loginButtonPressed(_ sender: UIButton) {
    // Any immediate changes to the UI here
    // ...

    // Start time consuming task in background
    DispatchQueue.global(qos: .userInitiated).async {
        getUserAccessToken()
        userLogin()

        // Make your Firebase call
        PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil) { (verificationId, error) in

            // Any response validation here
            // ...

            DispatchQueue.main.async {
                // Any UI updates here

            }
        }
    }
}

如果对象是数组,则像

这样传递密钥
let numbSet = [44,55,22,55,44,11];
Ascending by default numbSet.sorty();
Descending numbSet.sorty('dsc');

let objSet = [{a:44},{a:55},{a:22},{a:55},{a:44},{a:11}];
objSet.sorty('asc', 'a');