Reputation: 7954
I have some information like this, these are not objects ..just individual data
name : 'element1', x: 30, y : 35
name : 'element2', x : 10, y:16
name : 'element3', x: 70, y:11
i have pushed all three infos to three different arrays
var elmArray = ['element1','element2','element3'];
var xArray = [30, 10, 70];
var yArray = [35, 16, 11];
sorted the xArray
and yArray
in asc
order like this
xArray.sort(function(a, b){return a - b});
yArray.sort(function(a, b){return a - b});
My question is how do I sort the elmArray
with respect to xArray
and yArray
for example after xArray
sort I want elmArray
like this
['element2', 'element1', 'element3'];
and after yArray
I want it like this
['element3', 'element2', 'element1'];
Upvotes: 1
Views: 94
Reputation: 3330
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}
}
also see http://jsfiddle.net/et5zL3ve/
Upvotes: 3
Reputation: 136114
To start with, you must make your data into an array of objects.
var arr = [
{name : 'element1' ,x: 30, y : 35},
{name : 'element2', x : 10, y:16},
{name :'element3', x: 70, y:11}];
Then you know how to sort an array!
arr.sort(function(a,b){ return a.x - b.x; } ); // sort by x
Once sorted, if you want an array containing just one property you can use .map
var names = arr.map(function(e) { return e.name; });
Upvotes: 3
Reputation: 2940
Sort them as objects:
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 });
if you want individual portions of data:
var elements = sorted.map(function (e) { return e.name });
Upvotes: 3