繁体   English   中英

Javascript按数组对对象数组进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM