我需要在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;
}
答案 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');