2017-02-10 11 views
0

私は同様の質問を見ましたが、ほとんどの回答は良好なパフォーマンスではありません。私はAngular2またはNodeJSのどちらかを使用してパフォーマンスを向上させたいと考えています。Angular2またはNodeJs:別の配列に基づくJSON要素の並べ替え/並べ替え

私はスーパーマーケットは、私は何でも持って効率的に第二のリストを並べ替える必要がある

{"fruits":[ 
    {"Name":"Apple", "ID": 23}, 
    {"Name":"Mango", "ID": 15}, 
    {"Name":"Orange", "ID": 21}, 
    {"Name":"Melon", "ID": 7}, 
    {"Name":"Grapes", "ID": 67}, 
    {"Name":"Berries", "ID": 80}, 
]}; 

を提供するもの果物を持つJSONオブジェクトを持っているユーザーのフルーツの好みのID

{15, 43, 55, 67, 98}; 

のセットを持っていますリストの先頭にある最初の配列に存在します。残りの要素は、その順序を気にしません。したがって、上記の例では、結果は

{"fruits":[ 
    {"Name":"Mango", "ID": 15}, 
    {"Name":"Grapes", "ID": 67}, 
    {"Name":"Apple", "ID": 23}, 
    {"Name":"Orange", "ID": 21}, 
    {"Name":"Melon", "ID": 7}, 
    {"Name":"Berries", "ID": 80}, 
]}; 

答えて

0

これは、APIリクエスト

[GET] api/fruits?id=5,43,55,67,98 

だろうべきである私は、あなたがそれらのIDを配列した意味と仮定するつもりです。

let ids = [5, 43, 55, 67, 98]; 

私はこの立場からあなたの質問をどこかから指摘しています。

var data = {"fruits":[ 
    {"Name":"Apple", "ID": 23}, 
    {"Name":"Mango", "ID": 15}, 
    {"Name":"Orange", "ID": 21}, 
    {"Name":"Melon", "ID": 7}, 
    {"Name":"Grapes", "ID": 67}, 
    {"Name":"Berries", "ID": 80}, 
]}; 

あなたはJavascriptで問い合わせることができます方法です更新

var missing = []; 
var result = data.fruits.filter(fruit => keys.indexOf(fruit.ID) > -1 
    ? true : missing.push(fruit) && false); 
result.push(missing); 

return { "fruits": result }; 

プロパティ名にMongoストアとCamelCaseを使用することをおすすめします。

+0

ありがとうございます。あなたの前提は正しいですが、それらをフィルタリングして共通のフルーツ/ IDのみを返しますか?または、出力は私のポストのように、すべての果実しかし共通のものは上になりますか? – kemety

+0

申し訳ありませんが、私はその部分を逃してあまりにも多くを想定していました。私の答えを更新する。 – Proximo

関連する問題