2017-08-07 7 views
-1

以下のJSONがあります。私が探しているのは、同じsite_idを持つ複数のオブジェクトがある場合、site_id、ユーザーの配列、および残りのプロパティが一緒にマージされたオブジェクトを作成する場合です。 私は減らす使用してみましたが、それは働いていない:D複数のオブジェクトをJavaScriptの配列の類似したキーでマージする方法

はおそらく残りのオペレータがあなたの友人である、事前に

{ 
     "response": [ 
      { 
       "site_id": "4587c4183c312dd82309be6cdae7bbd6", 
       "name": "esse", 
       "lat": 82.3172, 
       "lon": -30.0668, 
       "company": "256090f4d3a41f34096876b71ee03694", 
       "user_id": "2d3393051386426adca86c13362e6f46", 
       "UserName": "Juliet44", 
       "Password": "Test", 
       "FirstName": "Kristy", 
       "LastName": "Goldner", 
       "Company": "256090f4d3a41f34096876b71ee03694", 
       "Email": "[email protected]", 

      }, 
      { 
       "site_id": "4587c4183c312dd82309be6cdae7bbd6", 
       "lat": 82.3172, 
       "lon": -30.0668, 
       "company": "256090f4d3a41f34096876b71ee03694", 
       "user_id": "2f2a174f63f7e277630eb808974dfd05", 
       "UserName": "Marguerite_Smith34", 
       "Password": "Test", 
       "FirstName": "Christian", 
       "LastName": "Gerhold", 
       "Company": "256090f4d3a41f34096876b71ee03694", 
       "Email": "[email protected]", 
      }, 
      { 
       "site_id": "94fc61eee3c0d01abace7a2feb84bc4c", 
       "name": "blanditiis", 
       "lat": 13.3673, 
       "lon": 54.3085, 
       "company": "256090f4d3a41f34096876b71ee03694", 
       "user_id": "3f85f1a435df6c3ca4ac944116515c04", 
       "UserName": "Tyrell.Schimmel", 
       "Password": "Test", 
       "FirstName": "Lucius", 
       "LastName": "O'Conner", 
       "Company": "256090f4d3a41f34096876b71ee03694", 
       "Email": "[email protected]", 
      }, 
     ] 
    } 
+2

* "あなたは試したことを示しています。 Stackoverflowは無料のコード作成サービスではありません。ここの目的は**あなたのコード**を修正するのを助けることです。 [ask]を読む時間があります – charlietfl

+0

希望の出力を表示することができます –

+0

'site_id'、' Company'と 'company'の違いは何ですか? – Andy

答えて

0

、ありがとうございました。あなたが本当に減らす必要があるならば、私はshureしません。簡単なforEachはそれを行います:

var hash={}, result = []; 

response.forEach(function({site_id,...rest}){ 
    if(!hash[site_id]){ 
    result.push(hash[site_id]={site_id}); 
    } 
    let el = hash[site_id]; 
    for(key in rest){ 
    if(el[key]){ 
     el[key].push(rest[key]); 
    }else{ 
     el[key] = [rest[key]]; 
    } 
    } 
}); 
+0

はい、これは完全に動作します。ありがとうございました –

関連する問題