J'ai des informations comme celle-ci, ce ne sont pas des objets ... juste des données individuelles

name : 'element1', x: 30, y : 35
name : 'element2', x : 10, y:16
name : 'element3', x: 70, y:11

J'ai poussé les trois infos sur trois tableaux différents

var elmArray = ['element1','element2','element3'];
var xArray = [30, 10, 70];    
var yArray = [35, 16, 11];

Trié les xArray et yArray dans l'ordre asc comme ceci

xArray.sort(function(a, b){return a - b});
yArray.sort(function(a, b){return a - b});

Ma question est de savoir comment trier les elmArray par rapport à xArray et yArray par exemple après le xArray tri, je veux elmArray comme ceci

['element2', 'element1', 'element3'];

Et après yArray je le veux comme ça

['element3', 'element2', 'element1'];
1
coolguy 16 juil. 2015 à 14:18

3 réponses

Meilleure réponse

Pour commencer, vous devez transformer vos données en un tableau d'objets.

var arr = [
    {name : 'element1' ,x: 30, y : 35},
    {name : 'element2', x : 10, y:16},
    {name :'element3', x: 70, y:11}];

Ensuite, vous savez comment trier un tableau!

arr.sort(function(a,b){ return a.x - b.x; } ); // sort by x

Une fois trié, si vous voulez un tableau contenant une seule propriété, vous pouvez utiliser .map

var names = arr.map(function(e) { return e.name; });
3
Jamiec 16 juil. 2015 à 11:28

Triez-les comme des objets:

var array = [
    {name : 'element1' ,x: 30, y:35 },
    {name : 'element2', x: 10, y:16 },
    {name : 'element3', x: 70, y:11 }
]

var sorted = array.sort(function (prev, next) { return prev.x - next.x });

Si vous voulez des portions individuelles de données:

var elements = sorted.map(function (e) { return e.name });
3
Andriy Horen 16 juil. 2015 à 11:28
var elmarray = ['element1','element2','element3'];
var xarray = [30,10,70];    
var yarray = [35,16,11];
finalArray = sort(xarray, elmarray);
xarray = finalArray.first;
elmarray = finalArray.second;
console.log(xarray);
console.log(elmarray);

function sort(a, b){
   for (var index = 0; index < a.length-1; index += 1) {
            nextIndex = index + 1;
            if (a[index] > a[nextIndex]) {
                holder1 = a[nextIndex];
                holder2 = b[nextIndex];
                
                a[nextIndex] = a[index];
                b[nextIndex] = b[index];
                
                a[index] = holder1;
                b[index] = holder2;
              }
        }
    return { first: a,
            second: b}
}

Voir également http://jsfiddle.net/et5zL3ve/

3
Bibek Sharma 16 juil. 2015 à 11:44