2016-08-11 65 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

我会做,像这样

​​
相关问题