[英]Javascript sort array of objects by array
我有一个结构像这样的对象数组(这只是示例)和一个id数组:
var array_objects=[
{id:'a',value:1},
{id:'b',value:2},
{id:'c',value:2},
{id:'d',value:3}
];
var array =['b','c','a','d'];
我想重新排序array_objects
同样的方式array
是有序的。 数组中的顺序可以每次更改。 这个怎么做?
一个简单的解决方案:
array_objects.sort(function(a,b){
return array.indexOf(a.id)-array.indexOf(b.id)
})
如果您有一个非常大的数组,并且想要快速实现某些目标,则可以使用以下变体,不调用indexOf
:
var m = array.reduce(function(r,k,i){ return r[k]=i,r },{});
array_objects.sort(function(a,b){ return m[a.id]-m[b.id] });
最容易生成一个新数组。
var arr2 = [], i;
for (i = 0; i < array.length; ++i)
arr2[array.indexOf(array_objects[i].id)] = array_objects[i];
如果使用相同的参考很重要,则可以通过splice
来做一些魔术
var i;
for (i = 0; i < array.length; ++i)
array_objects[array.indexOf(array_objects[i].id) + array.length] = array_objects[i];
array_objects.splice(0, array.length);
我认为这很简单,请尝试以下操作:
array_objects.sort(function(a,b){
return (a.id) > (b.id)
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.