我有两个数组,都是对象。
慈善机构(无序):
[{
"_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
}, ...]promotions数组按优先级排序(最高优先)。
我正在尝试做的是按照促销数组对慈善机构数组进行排序,因此优先级值最高的慈善机构被放在第一位,依此类推(连接到charity的连接是_id )。
我可以想到几种简单的方法来做到这一点,但是脑海中浮现的那些方法效率非常低。有什么建议吗?
发布于 2015-05-10 21:23:01
创建一个map,将慈善id作为key,索引(或优先级)作为value:
var map = {};
for (var i = 0; i < promotions.length; i++) {
map[promotions[i].charity] = i;
}现在,您可以对慈善机构进行排序,并使用地图来确定它们的顺序:
charities.sort(function(a, b){
return map[a._id] - map[b._id];
});https://stackoverflow.com/questions/30151886
复制相似问题