我一直在寻找这个,并且无法弄清楚如何说出(或者找不到)我正在寻找的东西。
我有两个javascript对象数组。一个具有完整ID的请求集合,另一个包含一个数组,该数组基本上是这些ID所代表的字典。我想通过一个存在于字典数组中的description_text来命令请求数组。我试图只在请求数组中存放ID,而不是在每个数组中重复1000次,并且正在寻找最快的方法来执行此操作。
示例:
$scope.requests = [
{ request_id 1, request_division_id: 1, morefeilds...},
{ request_id 2, request_division_id: 3, morefeilds...},
{ request_id 3, request_division_id: 1, morefeilds...},
{ request_id 4, request_division_id: 2, morefeilds...},
{ request_id 5, request_division_id: 4, morefeilds...}];
$scope.divDict = [
{request_division_id: 1, desc_text: 'Sahara Square'},
{request_division_id: 2, desc_text: 'Little Rodentia'},
{request_division_id: 3, desc_text: 'Rainforest District'},
{request_division_id: 4, desc_text: 'Tundratown'},]
所以在这种情况下我需要orderby以这个顺序返回排序:
$scope.requests = [
{ request_id 4, request_division_id: 2, morefeilds...},
{ request_id 2, request_division_id: 3, morefeilds...},
{ request_id 1, request_division_id: 1, morefeilds...},
{ request_id 3, request_division_id: 1, morefeilds...},
{ request_id 5, request_division_id: 4, morefeilds...}];
因为这是根据每个id的desc_text的字母顺序。
答案 0 :(得分:0)
这与排序没有什么不同,好像请求包含desc_text
属性:而不是从数组中的对象解析描述,您将从divDict
对象图解析它。
$scope.requests = $scope.requests.sort(function (req1, req2) {
let desc1 = $scope.divDict[req1.request_id].desc_text,
desc2 = $scope.divDict[req2.request_id].desc_text;
return desc1 < desc2? -1 : +(desc1 > desc2);
});
编辑:
我没有仔细阅读代码,并期望divDict
成为一个对象映射,其中键是请求ID,但我认为你仍然可以理解。