Comment changer l'ordre dans un tableau multidimensionnel lors du tri d'un sous-tableau en javascript?


F. Vosnim

Lorsque je trie un sous-tableau, comment puis-je changer l'ordre des éléments des autres sous-tableaux en fonction du nouvel ordre du sous-tableau trié:

var op = [];

op[0] = [0, "1:7001", "1:7002", "1:7003", "1:7004", "1:7005"];
op[1] = [1, "1:8001", "1:8002", "1:8003", "1:8004", "1:7005"];
op[2] = ["asw", 3, 5, 1, 10, 2];


op[2] = op[2].slice(0, 1).concat(op[2].slice(1, op[2].length).sort(function(a,b) {
    return b - a;
}));

console.log(op);

Le tableau attendu devrait ressembler à:

[0, "1:7004", "1:7002", "1:7001", "1:7005", "1:7003"];
[1, "1:8004", "1:8002", "1:8001", "1:7005", "1:8003"];
[ "asw", 10, 5, 3, 2, 1 ]
Nina Scholz

Vous pouvez prendre un tableau temporaire avec des objets de valeur et d'index pour le tri et mapper les autres tableaux avec les indices du tableau trié.

Cette approche s'appelle le tri avec carte .

var op = [
        [0, "1:7001", "1:7002", "1:7003", "1:7004", "1:7005"],
        [1, "1:8001", "1:8002", "1:8003", "1:8004", "1:7005"],
        ["asw", 3, 5, 1, 10, 2]
    ],
    order = op[2]                                  // take op[2] as pattern
        .slice(1)                                  // omit first element
        .map((v, i) => ({ v, i: i + 1 }))          // take value and index with offset
        .sort(({ v: a }, { v: b }) => b - a);      // sort by value desc

order.unshift({ i: 0 });                           // keep first item at index zero

op = op.map(a => order.map(({ i }) => a[i]));      // map value at index

console.log(op);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Articles connexes


Comment changer l'ordre d'un tableau en C ++

youssef salah J'essaye de changer l'ordre d'un tableau de caractères comme ceci: char arr_char[]="ABCDEFGHIJABCDEFGHIJ"; j'ai utilisé la fonction rand () dans le code suivant: #include <iostream> #include <cstdlib> #include <ctime> using namespace std; i

javascript - tri du tableau par ordre d'un autre tableau

P. Ishtik Mon objectif est de trier cette div <div id="myDiv">3xOrange;2xBlue;1xRed;1xRed;1xRed;1xOrange;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xOrange;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xR

Tri du tableau sans changer l'ordre d'un élément particulier

Abhishek Kumar Je veux trier ce tableau comme ça, toutes les quatre années en haut arrivent enfin sans changer l'ordre des autres et cela devrait être fait sans utiliser de regex. Notez que le nombre d'années n'est pas fixe dans ce cas peut être dans d'autres