Показать сообщение отдельно
  #1 (permalink)  
Старый 22.10.2013, 21:54
Кандидат Javascript-наук
Отправить личное сообщение для cha0s Посмотреть профиль Найти все сообщения от cha0s
 
Регистрация: 21.10.2013
Сообщений: 125

Помогите с сортировкой
Имеется такой контент

<div id="content">
    <div position="16">8</div>
    <div position="1,1">2</div>
    <div position="1">1</div>
    <div position="1,5">6</div>
    <div position="1,2">3</div>
    <div position="1,2,1,1">4</div>
    <div position="1,4">5</div>
    <div position="2">7</div>
</div>
<div id="results">
</div>


Нужно при помощи JS отсортировать его чтоб блоки расположились так:

<div position="1">1</div>
<div position="1,1">2</div>
<div position="1,2">3</div>
<div position="1,2,1,1">4</div>
<div position="1,4">5</div>
<div position="1,5">6</div>
<div position="2">7</div>
<div position="16">8</div>


То есть сортировка происходит по параметру position, вот мой набросок уже с ним запарился :/

var myArray = $("#content div");
myArray.sort(function (a, b) {

    a = $(a).attr("position");
    b = $(b).attr("position");


if ((a.split(',').length-1 === 0) && (b.split(',').length-1 === 0)) { // ЕСЛИ ОБА ЧИСЛА ЦЕЛЫЕ, ничего не делаем а приводим к 
        a = parseInt(a);                                                         //типу INT
        b = parseInt(b);
}
    
if ((a.split(',').length-1 !== 0) && (b.split(',').length-1 === 0)) { // если первое не целое а второе целое
        posA = a.indexOf(',');    
        a = parseInt(a.substr(0,posA);
        b = parseInt(b);
        if (a == b) {a=0;}
} 
    
if((a.split(',').length-1 === 0) && (b.split(',').length-1 !== 0)) { // если первое целое, а второе не целое
        posB = b.indexOf(',');
        a = parseInt(a);
        b = parseInt(b.substr(0,posB));
        if (a == b) {b=0;}
}


if(a > b) {
        return 1;
    } else if(a < b) {
        return -1;
    } else {
        return 0;
    }
});

$("#results").append(myArray);


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

Последний раз редактировалось cha0s, 22.10.2013 в 22:24.
Ответить с цитированием