2010-08-13 66 views
2

的順序給出:的javascript - 排序的第二陣列

var a1 = [{name:'Scott'}, {name:'John'}, {name:'Albert'}]; 
var sortOrder = ['John', 'Scott', 'Albert']; 

如何可以在第一陣列(由屬性)基於排序的第二陣列中指定的順序上。

// result: [{name:'John'}, {name:'Scott'}, {name:'Albert'}] 

謝謝。

回答

7
a1.sort(function(a,b) { 
    return (
    sortOrder.indexOf(a.name) < sortOrder.indexOf(b.name) ? -1 : 1 
); 
}); 
+0

那正是我在打字的中間...... +1 – Mark 2010-08-13 00:13:08

+0

這裏唯一的問題是,IE不支持'的indexOf()',所以你需要創建一個'的indexOf() '功能爲:http://stellapower.net/content/javascript-support-and-arrayindexof-ie – 2010-08-13 00:28:17

+0

@Gert G:要麼,或使IE瀏覽器正常使用[Chrome Frame](http:// code .google.com/chrome/chromeframe /);) – sje397 2010-08-13 00:56:26