2015-01-09 2 views
0

У меня есть следующий массив.Сортировка массива по его значениям

var arr = ["1-5", "3-6", "2-4"]; 

Есть ли способ, где я могу сортировать так:

var arr = ["1-5", "2-4", "3-6"] 

Я попытался с картой Jquery но ханжества, поскольку значения массива не являются числами.

+1

Это просто упорядоченный первым номером? Можете ли вы показать, что у вас есть до сих пор, так как было бы полезно показать, где вы поступили неправильно – CodingIntrigue

ответ

3

Вы можете использовать функцию sort

Сортировать по первым номером

arr.sort(function (a, b) { 

    // a.split('-') - split a string into an array - ['1', '5'] 
    // a.split('-')[0] - get first element   - '1' 
    // "+" converts string to number     - 1 
    // the same for "b" 

    return +a.split('-')[0] - +b.split('-')[0]; 
}); 

Example

Сортировать по второй номер

arr.sort(function (a, b) { 
    return +a.split('-')[1] - +b.split('-')[1]; 
}); 

Example

+0

Это было быстро, спасибо! – hiero

0

Вы можете попробовать встроенную функциональность сортировки arr.sort()

http://jsfiddle.net/qctg9cfx/

+0

любые подсказки относительно того, почему это было проголосовано? –

1

Используйте массив сортировки. Сначала сравнивается первое число. Если они равны, то второй Num сравнивается ..

var arr = ["1-5", "3-6", "2-4"]; 
 
    
 
var sorted = arr.sort(function(a,b){ 
 
     var numsA = a.split('-'); 
 
     var numsB = b.split('-'); 
 
     if (numsA[0]-numsB[0] !== 0){ 
 
      return numsA[0] - numsB[0]; 
 
     } 
 
     return numsA[1] - numsB[1]; 
 
}); 
 
    
 
document.write(sorted);

0

Если сортировку по первому номеру в строке, а также, если первое число само по себе может быть отрицательным, то более надежное решение может быть использовано parseInt.

var arr = ["1-5", "3-6", "-1-3", "2-4"]; 
 

 
arr.sort(function (a, b) { 
 
    return parseInt(a, 10) - parseInt(b, 10); 
 
}); 
 

 
document.body.appendChild(document.createTextNode(JSON.stringify(arr)));

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