第一个哈希是
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];
});