2015-04-24 5 views
0

У меня есть объект JavaScript:Сортировка массивов внутри объекта на основе значения внутри каждого массива

var javascriptObj = response[Object.keys(response)[Object.keys(response).length - 1]] 

который выглядит следующим образом:

[["1", 121], ["10", 58], ["2", 69], ["3", 246], ["4", 3], ["5", 446], ["6", 124], ["7", 396], ["8", 190], ["9", 46]] 

Есть ли способ, чтобы преобразовать значения («1» , "2", "3") в целое число, а затем сортировать объект на основе этого числа?

EDITED

Значения не всегда остаются теми же. Несколько раз это от 1 до 5 или 8-13. А также может быть, что между ними отсутствуют недостающие значения.

ответ

2

Попробуйте это:

var javascriptObj = [["1", 121], ["10", 58], ["2", 69], ["3", 246], ["4", 3], ["5", 446], ["6", 124], ["7", 396], ["8", 190], ["9", 46]]; 
 

 
var output = javascriptObj.map(function(array) { 
 
    return [+array[0], array[1]]; 
 
}).sort(function(a, b) { 
 
    return a[0]-b[0]; 
 
}); 
 
document.getElementsByTagName('div')[0].innerHTML = JSON.stringify(output);
<div></div>

+0

Спасибо. Это сделало работу. – user1919

+0

Молодцы. Я впечатлен. – rfornal

1

Попробуйте что-то вроде этого ...

myArray.sort(function(a, b) {return parseInt(a[0], 10) - parseInt(b[0], 10)}); 

UPDATE: Изменен [1] и б [1] до [0] и Ь [0].

+0

это должно быть [0] б [0] – Dhiraj

+0

Не должно быть 'а [0] и' б [0] ' ? – jcubic

+0

Спасибо за ответ. Значения не всегда остаются неизменными. Несколько раз это от 1 до 5 или 8-13. А также может быть, что между ними отсутствуют недостающие значения. – user1919

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