2014-09-01 115 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); 
}