我有这样的信息,这些不是对象..只是个人数据
name : 'element1', x: 30, y : 35
name : 'element2', x : 10, y:16
name : 'element3', x: 70, y:11
我已将所有三个信息推送到三个不同的阵列
var elmArray = ['element1','element2','element3'];
var xArray = [30, 10, 70];
var yArray = [35, 16, 11];
按照xArray
顺序对yArray
和asc
进行排序
xArray.sort(function(a, b){return a - b});
yArray.sort(function(a, b){return a - b});
我的问题是如何根据elmArray
和xArray
对yArray
进行排序
例如xArray
排序之后,我希望elmArray
像这样
['element2', 'element1', 'element3'];
在yArray
之后,我希望它像这样
['element3', 'element2', 'element1'];
答案 0 :(得分:3)
将它们排序为对象:
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 });
如果您想要单独的数据部分:
var elements = sorted.map(function (e) { return e.name });
答案 1 :(得分:3)
首先,必须将数据制作成一个对象数组。
var arr = [
{name : 'element1' ,x: 30, y : 35},
{name : 'element2', x : 10, y:16},
{name :'element3', x: 70, y:11}];
然后你知道如何对数组进行排序!
arr.sort(function(a,b){ return a.x - b.x; } ); // sort by x
排序后,如果您想要一个只包含一个属性的数组,可以使用.map
var names = arr.map(function(e) { return e.name; });
答案 2 :(得分:3)
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}
}