如何将项目插入 Javascript 哈希



第一个哈希是

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值中时,我想在该值旁边插入一个新项目。

谢谢

答案在于循环访问每个对象的键和元素。找到匹配项后,添加匹配项。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

根据菲利克斯的建议更新

试试这个。

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;
    }
}

如果你能够使用库,有很多很好的解决方案,包括 lodash 的 assign()。

如果要自行执行此操作,可以循环访问源对象的键并将值插入目标:

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

最新更新