2015-09-04 4 views
0

Ineed поможет с правильной сортировкой в ​​созданном объекте.Сортировка объекта в javascript (по номеру)

объекта (в for цикле):

var labelD = $("#crpc-page label[for='crpc-" + i + "-date']").text(); 
var valueD = $("#crpc-" + i + "-date").val(); 
var labelV = $("#crpc-page label[for='crpc-" + i + "-value']").text(); 
var valueV = $("#crpc-" + i + "-value").val(); 

console.log("i:" + labelD + " => " + valueD); 
console.log("i:" + labelV + " => " + valueV); 

dni = Date.parse(valueD); 

var sortowanie = {}; 
var nr = "numer"; 
var dataD = "dataD"; 
var wartosc = "wartosc"; 
sortowanie[nr] = dni; 
sortowanie[dataD] = valueD; 
sortowanie[wartosc] = valueV; 
all_dates.push(sortowanie); 

Сортировка Функция

function compare(a, b) { 
    if (a.numer < b.numer) return -1; 
    if (a.numer > b.numer) return 1; 
    return 0; 
} 

all_dates.sort(compare); 

Вторая альтернативная функция сортировки:

function sortElement() { 
    all_dates.sort(function(a, b){ 
     return a.numer-a.numer; 
    }); 
} 
sortElement(); 

И теперь. Моя проблема в том, что эта функция сортирует только numer значение не всех объектов внутри { ... }.

Пример консоль возвращается:

[ 
    {"numer":1428530400000,"dataD":"04/09/2015","wartosc":"3"}, 
    {"numer":1441058400000,"dataD":"09/01/2015","wartosc":"1"}, 
    {"numer":1441576800000,"dataD":"09/07/2015","wartosc":"2"} 
] 

Я хочу Получать:

[ 
    {"numer":1441058400000,"dataD":"09/01/2015","wartosc":"1"}, 
    {"numer":1441576800000,"dataD":"09/07/2015","wartosc":"2"}, 
    {"numer":1428530400000,"dataD":"04/09/2015","wartosc":"3"} 
] 

Мой мозг горит, и я не знаю, как переключить все элементы внутри {}

Спасибо, Fantazy

+1

попытка заменить: 'возвращение a.numer-a.numer;' –

ответ

0
all_dates.sort(function(a,b){ 
     return b.numer-a.numer; 
}); 

Он работает в соответствии с вашими потребностями.

0

Ваш синтаксический анализ не работает, потому что это не дата США.

Вместо этого используйте

var parts = valueD.split("/"); 
dni = new Date(parts[2],parts[1]-1,parts[0]).getTime(); 

DEMO:

function compare(a, b) { 
 
    if (a.numer < b.numer) return -1; 
 
    if (a.numer > b.numer) return 1; 
 
    return 0; 
 
} 
 

 
function getEURTime(str) { 
 
    var parts = str.split("/"); 
 
    return new Date(parts[2],parts[1]-1,parts[0]).getTime(); 
 
} 
 
var EUR = [ 
 
    {"dataD":"04/09/2015","wartosc":"3"}, 
 
    {"dataD":"09/01/2015","wartosc":"1"}, 
 
    {"dataD":"09/07/2015","wartosc":"2"} 
 
] 
 

 
for (var i=0;i<EUR.length;i++) { 
 
    EUR[i].numer=getEURTime(EUR[i].dataD); 
 
} 
 
console.log(EUR.sort(compare))

Смежные вопросы