将哈希与属性数组合并

时间:2016-04-21 09:00:25

标签: javascript hash

我有2个哈希(对象),例如

hash1 = {myKey: ["string1"]}

hash2 = {myKey: ["string2"]}

我想将它们合并在一起,所以最后我会得到类似的内容 -

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

我尝试了$.extend,但这对于数组属性

无效

3 个答案:

答案 0 :(得分: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>');

答案 1 :(得分:0)

您可以Array.prototype.push.apply()合并数组

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

答案 2 :(得分: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

中查看