2015-08-21 2 views
2

У меня есть два массива, и я хочу, чтобы объединить данные с тем же значениемКак объединить JSon массив с одинаковыми значениями в JavaScript

"calleridnum":"0090000163", "uid":"0090000163",

это мой первый массив:

[ 
{ 
"_id":"55d44fe38879f12e6431c23c", 
"event":"ConfbridgeJoin", 
"channel":"SIP/peer_voip301confbridge-00000145", 
"uniqueid":"1439977429.777", 
"conference":"0090000167", 
"calleridnum":"0090000163", 
"calleridname":"0090000163", 
"__v":0, 
"sipSetting":{ 
"accountcode":"", 
"accountcode_naisen":"202", 
"extentype":0, 
"extenrealname":"", 
"name":"0090000163", 
"secret":"Myojyo42f!", 
"username":"0090000163", 
"context":"innercall_xdigit", 
"gid":101, 
"cid":"0090000007" 
} 
} 
] 

Это мой второй массив

[ 
{ 
"id":8, 
"uid":"0090000163", 
"cid":"0090000007", 
"extension":"202", 
"secret":"Myojyo42f!", 
"leader":true, 
"simultaneous":false, 
"confbridge_id":6, 
"created_at":"2015-08-18 09:22:20", 
"updated_at":"2015-08-18 09:22:20" 
}, 
{ 
"id":15, 
"uid":"0090000164", 
"cid":"0090000007", 
"extension":"203", 
"secret":"Myojyo42f!", 
"leader":false, 
"simultaneous":false, 
"confbridge_id":6, 
"created_at":"2015-08-19 01:26:30", 
"updated_at":"2015-08-19 01:26:30" 
} 
] 

я хочу, чтобы объединить объект с тем же значением 0090000163

я хочу, чтобы получить, если CALLERIDNUM == UID

я хочу, чтобы этот выход

"_id":"55d44fe38879f12e6431c23c", 
    "event":"ConfbridgeJoin", 
    "channel":"SIP/peer_voip301confbridge-00000145", 
    "uniqueid":"1439977429.777", 
    "conference":"0090000167", 
    "calleridnum":"0090000163", 
    "calleridname":"0090000163", 
    "__v":0, 
    "sipSetting":{ 
    "accountcode":"", 
    "accountcode_naisen":"202", 
    "extentype":0, 
    "extenrealname":"", 
    "name":"0090000163", 
    "secret":"Myojyo42f!", 
    "username":"0090000163", 
    "context":"innercall_xdigit", 
    "gid":101, 
    "cid":"0090000007" 
    "id":8, 
    "uid":"0090000163", 
    "cid":"0090000007", 
    "extension":"202", 
    "secret":"Myojyo42f!", 
    "leader":true, 
    "simultaneous":false, 
    "confbridge_id":6, 
    "created_at":"2015-08-18 09:22:20", 
    "updated_at":"2015-08-18 09:22:20" 

я это делаю в php. но я не имею много знаний в JavaScript

это мой код в PHP

// $apiResults['participants'] == first array 
// $apiResults['conference_participants'] == second array 


$conf_participants = array(); 
     foreach($apiResults['participants'] as $participant) 
     { 
     foreach($apiResults['conference_participants'] as $conference_participant) 
     { 
    if($participant['calleridnum'] == $conference_participant['uid']) 
     { 

      $conf_participants['uniqueid'] = $participant['uniqueid']; 
      $conf_participants['event'] = $participant['event']; 
      $conf_participants['channel'] = $participant['channel']; 
      $conf_participants['uid'] = $conference_participant['uid']; 



     } 
     } 
     } 
+0

ли цикл, проверить 'если (CALLERIDNUM == UID)', если это правда - '$ .extend (массив1 array2);' – Justinas

+0

Нет, я хочу знать, что вы сделали еще сейчас? –

ответ

3

позволяет сказать, что у вас есть два массива объектов arr1 и arr2 Вам нужно перебрать и сравните стоимость calleridnum от arr1 и uid от arr2 если они такие же, то слияние объекта in arr1.

for(var i in arr1){ 
for (var j in arr2) 
    if (arr2[j].uid == arr1[i].calleridnum) { 
    $.extend(arr1[i], arr2[j]); 
     break; 
    } 
} 
+1

'arr1 [i] .merge' не является существующей функцией. Кроме того, почему вы просто не отреагировали на другой ответ? Не поймите меня неправильно, когда вы исправите функцию слияния, это правильный ответ. – Cerbrus

+0

.merge() - функция jquery –

+0

Да, но это не функция на массиве или объекте. ('$ .merge (a, b)') – Cerbrus