javascript - 使用另一个数组中的值对对象数组进行排序

标签 javascript arrays sorting

我有两个数组,都是对象。

慈善机构(无序):

[{
    "_id": "5527c2b29a4c7ebe2953129d",
    "name": "Lorem ipsum",
    "number": 1,
    "metric": "Lorem ipsum",
    "metricConversion": 6,
    "logo": "http://api.fake.net/example.png",
    "country": "Albania",
    "twitter": "exampletwitter",
    "facebook": "examplefb"
}, ...]

促销:

[{
    "type": 1,
    "charity": "5527c2b29a4c7ebe2953129d",
    "start": Sun May 10 2015 14:11:32 GMT+0100 (BST),
    "end": Thu Jul 02 2009 00:00:00 GMT+0100 (BST),
    "priority": 10
}, ...]

促销数组按优先级排序(最大的优先)。

我想做的是按促销数组对慈善机构数组进行排序,因此将优先级最高的慈善机构放在第一位,依此类推(连接是 _id慈善机构)。

我可以想到几种简单的方法来做到这一点,但是我想到的方法效率很低。有什么建议吗?

最佳答案

创建一个以慈善机构 ID 作为键、索引(或优先级)作为值的 map :

var map = {};
for (var i = 0; i < promotions.length; i++) {
  map[promotions[i].charity] = i;
}

现在您可以对慈善机构进行排序并使用 map 来确定其顺序:

charities.sort(function(a, b){
  return map[a._id] - map[b._id];
});

关于javascript - 使用另一个数组中的值对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30151886/

相关文章:

Javascript 整数数组错误

python - Pandas - 按大小总和对 Multiindex 进行排序

javascript - 使用 Greasemonkey 修改 Craigslist 的默认搜索结果排序?

javascript - 通过数据 ID 选择对象并设置对象样式

php - 获取具有某个键值的所有值

javascript - 带有自动播放的 slider 以及带有 CSS HTML JS 的下一个和上一个箭头

java - String 流上的 toArray 返回 Object[]

algorithm - 对图表进行排序以使尽可能多的箭头指向前方

javascript - 使用 ng-model 选择下拉列表中的两个对象

javascript - 如何从自定义指令获取链接href?