2014-09-01 84 views
0

我有两个这样的数组;使用Javascript:排序数组后,重新排序比较

var a = [5,3,1,2,4] 
var val = [{id: 'no5'}, {id: 'no3'}, {id: 'no1'}, {id: 'no2'}, {id: 'no4'}] 

它们彼此匹配。 a[i] == val[i]

但是有些情况下我需要对a进行排序;

a.sort(function(a,b){ return a-b }) // a = [1,2,3,4,5] 

我的问题是,我该如何重新索引a使得它的val指数相匹配?

+2

你为什么不选它之前做了''的副本,这样你可以得到的原始版本背部? – Barmar 2014-09-01 10:55:58

+0

问题是,排序后,a中的值会发生变化。只需要重新排列... – rolodex 2014-09-01 17:14:19

+0

这就是要点。做一个副本,并对其进行排序。原始数组将保持不变。 – Barmar 2014-09-01 19:50:28

回答

0
val.sort(function(a,b){ 
    return a.id.slice(2) - b.id.slice(2); 
}); 

编辑:我误解的问题,我认为OP希望以同样的方式为a排序val

0

我仍然不知道我知道,但我会采取刺伤:

for (var i = 0; i < a.length; i++) { 
    a[i] = parseInt(val[i].id.substr(2), 10); 
}