2016-08-11 41 views
0

我正在接收來自服務器的對象數組,但它們不是按照我想要吐出的順序排列的。不幸的是,我想要的訂單也不是按字母順序排列的。我想知道重新排列數組元素的最佳方式是什麼。另外,如果有辦法,我可以利用array.sort。我怎麼會有現在的工作:以自定義順序在Javascript中放入數組元素的最佳方法

function arraySort(array) { 
    let orderedArray = new Array(); 
    array.map(item => (
    item.key === 'Person' ? orderedArray[0] = item : null, 
    item.key === 'Place' ? orderedArray[1] = item : null, 
    item.key === 'Thing' ? orderedArray[2] = item : null 
)); 
    return orderedArray; 
} 
+2

你知道嗎,你可以通過自定義比較函數['sort'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/參考/ Global_Objects /陣列/排序)? –

+6

可能重複的[如何在JavaScript中定義自定義排序函數?](http://stackoverflow.com/questions/5002848/how-to-define-custom-sort-function-in-javascript) –

+0

我不認爲這是重複的。 OP在詢問如何實現任意排序 – naomik

回答

2

在這裏你去。

var order = ['Person', 'Place', 'Thing']; 
 
var a = [ 
 
    { key: 'Place' }, 
 
    { key: 'Thing' }, 
 
    { key: 'Place' }, 
 
    { key: 'Person' }, 
 
    { key: 'Place' }, 
 
    { key: 'Thing' }, 
 
    { key: 'Person' } 
 
]; 
 

 
var b = a.sort(function(a,b) { 
 
    return order.indexOf(a.key) - order.indexOf(b.key); 
 
}); 
 

 
console.log(b);

+0

好的工作。這可能是您在不瞭解更多OP的情況下可以給出的最佳答案。 – naomik

+0

謝謝!這正是我所期待的! – JLegendre

+1

@JLegendre下次發佈您的問題的示例輸入和預期輸出。 – naomik

-1

我會做,像這樣

​​
相關問題