2016-08-16 18 views
-2

私はこれを探していて、探しているものを語る方法を見つけられません。あなたはどのようにして辞書を辞書として使用していますか

私はオブジェクトの2つのJavaScript配列を持っています。 1つはIDでいっぱいのリクエストのコレクションを持ち、もう1つは基本的にそれらのIDが表すものの辞書である配列を含んでいます。私はorderByyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy、私は各アレイで1000回繰り返すのではなく、リクエスト配列内のIDだけを格納しようとしており、これを行う最速の方法を探しています。

例:それは各IDのdesc_textに従ってアルファベット順であるとして

 $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...}]; 

 $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が必要になります。

+0

[JavaScriptの文字列プロパティ値によるオブジェクトの並べ替え]の可能な複製(http://stackoverflow.com/questions/1129216/sort-array-of-objects-by-string-property-value-in-javascript ) – vlaz

+0

これはその質問と重複していません。私は辞書と比較していますが、この質問にはすでにオブジェクト配列内のプロパティがあります。私はそれを避けようとしています。 – ModestMonk

+0

これを分析させてください。別の配列の順序に基づいて配列をソートするにはどのようにすればよいか尋ねられたので、私の質問はトピックから外されています。これは話題にはなりませんか?それを説明する時間をとってくれてありがとうplalxありがとう。私は、バットではないことを期待してZootopiaの参考文献を載せました。スタックオーバーフローコミュニティは親切で無礼です。 – ModestMonk

答えて

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); 
}); 

EDIT:

私は慎重にコードを読んで、divDictは、キーが要求IDになるオブジェクト・マップであることが予想、しかし、私はあなたがまだアイデアを得るだろうとは思いませんでした。

+0

ありがとうございます。なぜ私はそれをこのように考えることができなかったのか分かりません。 request_idとdesc_textが潜在的に動的であるか、いずれかのフィールドのいずれかになる可能性がある場合、どのようにソートするのですか? – ModestMonk

+0

私はあなたの質問を理解しているか分からない。あなたが比較しようとしているプロパティの名前がわからない場合、あなたができる最善の方法は、キーのループであり、同様のキーなどを比較することです。 – plalx

+0

値を渡すと、idPassedFromNgClickというコードをscope.divDict [req1.request_id] [idPassedFromNgClick]と呼ぶことができますか?また、なぜあなたはrequest_idを参照しているのですか?辞書にはそのプロパティがないので、何か他のものであってはいけません。 – ModestMonk

関連する問題