如何将项目插入Javascript哈希?

时间:2015-04-20 15:55:38

标签: javascript jquery

第一个哈希是

a = {"10167": "Hello", "10122": "World", "10245": "Hello2", "10035": "People"}

第二个哈希是

b = {"A": "one", "B": "10122", "C": "Three"}

我希望得到以下内容:

b = {"A": "one", "B": "10122", "B_Description": "World", "C": "Three"} 

每当散列a键出现在散列b值中时,我想在其旁边插入一个新项目。

由于

3 个答案:

答案 0 :(得分:2)

答案在于循环每个对象的键和元素。找到匹配项后,添加它。 http://jsfiddle.net/2x6Lws96/1/

var a = {"10167":"Hello", "10122":"World", "10245":"Hello2", "10035":"People"};
var b = {"A": "one", "B": "10122", "C": "Three"};

var akeys = Object.keys(a);

for(bkey in b) {
    if(a[b[bkey]]) {
        b[bkey+'_Description'] = a[b[bkey]];
    }
}

修改 这只适用于IE9及更高版本(以及几乎任何其他浏览器)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

在JS中,你不要插入'价值观成对象。只需指定myObject.newField = 'newValue'

即可

编辑2

根据Felix的建议进行了更新

答案 1 :(得分:0)

试试这个。

var a = {"10167": "Hello", "10122": "World", "10245": "Hello2", "10035": "People"};
var b = {"A": "one", "B": "10122", "C": "Three"};

for(var prop in b) {
    var val = a[b[prop]];
    if(val != undefined) {
        b[prop + '_Description'] = val;
    }
}

答案 2 :(得分:-1)

如果您能够使用图书馆,那么有很多很好的解决方案,包括lodash's assign()

如果您想自己完成此操作,可以迭代源对象的键并将值插入目标:

Object.keys(a).forEach(function (key) {
    b[key] = a[key];
});