Список сортировки по идентификаторам [дубликат]

Тип математики с плавающей запятой, которая может быть реализована на цифровом компьютере, обязательно использует приближение реальных чисел и операций над ними. (Стандартная версия стандартная работает до более чем пятидесяти страниц документации и имеет комитет для рассмотрения ее ошибок и дальнейшего уточнения.)

Это приближение представляет собой смесь приближений разного типа, каждый из которых можно либо игнорировать, либо тщательно учитывать из-за его конкретного способа отклонения от точности. Это также включает в себя ряд явных исключительных случаев как на уровне аппаратного обеспечения, так и на уровне программного обеспечения, которое большинство людей прогуливает прямо мимо, делая вид, что не замечает.

Если вам нужна бесконечная точность (например, вместо числа π одного из его более коротких резервных копий), вы должны написать или использовать символическую математическую программу.

Но если вы в порядке с идеей о том, что иногда математика с плавающей запятой нечеткая по значению и логике и ошибки могут быстро накапливаться, и вы можете написать свои требования и тесты для этого, тогда ваш код может часто проходить с помощью того, что находится в вашем FPU.

19
задан Peter Mortensen 1 March 2016 в 00:01
поделиться

4 ответа

Вы можете вызвать .sort () перед вызовом .each ()

$("div[id*=pi_div]").sort(function(a,b){
    if(a.id < b.id) {
        return -1;
    } else {
        return 1;
    }
}).each(function() { console.log($(this).attr("id"));});

EDIT: мне было интересно, почему другие ответы удаляют pi_div часть идентификатора, и я получаю его. Если вы сравните на основе «строк» ​​pi_div10, появится перед pi_div2.

17
ответ дан koopajah 26 August 2018 в 12:06
поделиться

Я бы использовал метод Array.sort. http://jsfiddle.net/LJWrg/

var divArr = $("div[id*=pi_div]");
function cleanId(id) {
    return parseInt(id.replace("pi_div",""),10);
}
Array.prototype.sort.call(divArr,function(a,b) {
    return cleanId(a.id) > cleanId(b.id);
});
divArr.each(function(){
    console.log(this.id);
});

jQuery действительно использует этот метод, определяемый внутри, поэтому вы можете сократить его до этого (однако он использует недокументированные методы) http://jsfiddle.net/LJWrg/1/ :

var divArr = $("div[id*=pi_div]");
function cleanId(id) {
    return parseInt(id.replace("pi_div",""),10);
}
divArr.sort(function(a,b) {
    return cleanId(a.id) > cleanId(b.id);
});
divArr.each(function(){
    console.log(this.id);
});
1
ответ дан Kevin B 26 August 2018 в 12:06
поделиться

Если вы также хотите их сортировать на странице

$('div[id^="pi_div"]').sort(function (a, b) {
    var re = /[^\d]/g;
    return ~~a.id.replace(re, '') > ~~b.id.replace(re, '');
})
.appendTo("#container");

Обратите внимание на ~~, который преобразует значения в целые числа, иначе они будут сравниваться как строки.

См. http://jsfiddle.net/Xjc2T/

7
ответ дан Tomalak 26 August 2018 в 12:06
поделиться
$("div[id^=pi_div]").sort(function (a, b) {
    return a.id.replace('pi_div', '') > b.id.replace('pi_div', '');
}).foo();

http://jsfiddle.net/KrX7t/

6
ответ дан undefined 26 August 2018 в 12:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: