Проблема сортировки массива Javascript - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть массив JavaScript, подобный этому:

a[0][0] = "apple";
a[0][1] = 6.5;
a[1][0] = "orange";
a[1][1] = 4.3;
a[2][0] = "pear";
a[2][1] = 3.1;

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

т.е.

a[0][0] = "pear";
a[1][1] = 3.1;
a[1][0] = "orange";
a[1][1] = 4.3;
a[2][0] = "apple";
a[2][1] = 6.5;

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

Кроме того, я не знаю, как переназначить контент в порядке возрастания. Кто-нибудь может мне помочь?

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

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011

При условии, что части вашего кода, которые вы не указали, верны и должны работать

var index;
var a = [];  // inferred

a[0] = [];   // inferred
a[1] = [];   // inferred
a[2] = [];   // inferred

a[0][0] = "apple";
a[0][1] = 6.5;
a[1][0] = "orange";
a[1][2] = 4.3;
a[2][0] = "pear";
a[2][3] = 3.1;

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

for (index = 0; index < a.length; ++index) {
  display(a[index].join());
}

Живая копия

Вывод:

pear,3.1
orange,4.3
apple,6.5

Не по теме : более эффективный и, возможно, более понятный способ инициализации этого массива:

var a = [
    ["apple", 6.5],
    ["orange", 4.3],
    ["pear", 3.1]
];

Живая копия

2 голосов
/ 15 февраля 2011

Правильно ли вы создали массив?Ваша функция сортировки верна ...

var a=[['apple',6.5],['orange',4.3],['pear',3.1]];
a.sort(function(a,b){return a[1]-b[1]});

/*  returned value: (Array)
pear,3.1,orange,4.3,apple,6.5
*/
0 голосов
/ 15 февраля 2011

Вам просто нужно изменить порядок a, b в функции сортировки

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

попробуйте это в консоли firebug, dragonfly или webkit

var a = [["apple",6.5],["orange",4.3],["pear",3.1]];
a.sort(function(a,b){return b[1] -a[1];});

console.log(a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...