Как отсортировать многомерный массив с учетом только индекса [0] каждого подмассива? - PullRequest
0 голосов
/ 28 августа 2018

Как отсортировать многомерный массив, учитывая только индекс [0] каждого подмассива?

У меня есть этот массив:

 var arr= [
 [13538, 6.4,'mese1'],
 [41308, 9.5,'mesi6'],
 [53656, 8.1,'anno1'],
 [271203, 8.3,'anni5']
];

var even= arr;
var magn= arr;

и я хотел бы иметь even и magn в выводе, как это:

Сортировка по индексу [0]

var even= [
 [271203, 8.3,'anni5'],
 [53656, 8.1,'anno1'],
 [41308, 9.5,'mesi6'],
 [13538, 6.4,'mese1']
];

Сортировка по индексу [1]

var magn= [
 [41308, 9.5,'mesi6'],
 [271203, 8.3,'anni5'],
 [53656, 8.1,'anno1'],
 [13538, 6.4,'mese1']
];

Я попробовал этот код, но он не работает правильно:

console.log(even.sort(ordine_decrescente_eventi));
console.log(magn.sort(ordine_decrescente_magnitudo));

//ordino un array in maniera decrescente
function ordine_decrescente_eventi(a,b) {
    return b[0] - a[0];
}   

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

Это jsfiddle: https://jsfiddle.net/szoe32xb/

Надеюсь, вы мне поможете и извините за мой английский!

1 Ответ

0 голосов
/ 28 августа 2018

Ваша проблема в следующих строках:

var even= arr;
var magn= arr;

Назначение массива создает ссылку, а не копию, поэтому в вашем случае вам нужно изменить свои назначения на:

var even= arr.slice(0);
var magn= arr.slice(0);

var arr= [
    [13538, 6.4,'mese1'],
    [41308, 9.5,'mesi6'],
    [53656, 8.1,'anno1'],
    [271203, 8.3,'anni5']
];


var even= arr.slice(0);
var magn= arr.slice(0);


console.log(even.sort((a,b) => b[0] - a[0]));
console.log(magn.sort((a,b) => b[1] - a[1]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...