2016-04-21 80 views
-2

我有2散列(對象)爲前。合併散列與屬性數組

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