2016-04-21 4 views
-2

У меня есть 2 хеша (объекты) для ex.Merge hash с массивами свойств

hash1 = {myKey: ["string1"]} 

hash2 = {myKey: ["string2"]} 

Я хочу, чтобы объединить их вместе, так что в конце концов я хотел бы получить что-то вроде следующее -

{myKey: ["string1", "string2"] } 

Я попытался $.extend, но это не работает для массивов в собственность

+3

ключи не совпадают. –

ответ

1

Вы можете возьмем для этого функцию.

function add(o, v) { 
 
    Object.keys(v).forEach(function (k) { 
 
     o[k] = o[k] || []; 
 
     v[k].forEach(function (a) { 
 
      o[k].push(a); 
 
     }); 
 
    }); 
 
} 
 

 

 
var hash1 = { myKey: ["string1"] }, 
 
    hash2 = { myKey: ["string2"] }; 
 

 
add(hash1, hash2); 
 
document.write('<pre>' + JSON.stringify(hash1, 0, 4) + '</pre>');

0

Вы можете Array.prototype.push.apply() слиться массив

var hash1 = {myKey: ["string1"]}; 
 
var hash2 = {myKey: ["string1"]}; 
 
Array.prototype.push.apply(hash1.myKey, hash2.myKey) 
 
console.log(hash1)

0

Примечание: проверка в случае чувствительности ваших ключей.

Вы можете сделать что-то вроде этого:

hash1 = {myKey: ["string1"]} 
hash2 = {myKey: ["string2"]} 
var result = {}; 
for (var hash1Key in hash1) { 
    if (hash1.hasOwnProperty(hash1Key)) { 
     for (var hash2Key in hash2) { 
      if (hash2.hasOwnProperty(hash2Key)) { 
       if (hash1Key === hash2Key) { 
        result[hash1Key] = [hash1[hash1Key], hash2[hash2Key]] 
       } 
      } 
     } 
    } 
} 

Смотреть это жить в jsFiddle

Смежные вопросы