我有两个具有以下结构的对象:
var one = {
'26-34-1' : 100,
'26-34-84' : 101
};
var two = [
{
from : { id: '34', sid: '26' },
to : { id: '1', sid: '26' }
},
{
from : { id: '34', sid: '26' },
to : { id: '84', sid: '26' }
}
];
one
中的键(例如26-34-1)以two
格式识别对象,格式为:
from.sid
- from.id
- to.id
如果one
中的键匹配,我需要做的是将two
的值插入one
。导致:
var two = [
{
from : { id: '34', sid: '26' },
to : { id: '1', sid: '26' },
oneid : { id: 100 }
},
{
from : { id: '34', sid: '26' },
to : { id: '84', sid: '26' },
oneid : { id: 101 }
}
];
我似乎无法弄清楚,我认为已经完成"映射" 但是无法映射{{ 1}},from.sid
和from.id
。有人可以对此有所了解吗?
答案 0 :(得分:1)
编辑:正如我从另一个回答中所理解的那样,这不是TS所询问的,如果他没有two
,那么下一个代码将会执行所需的操作。
for (var key in one) {
var values = key.split('-');
var object = {
from: {
id: values[1],
sid: values[0]
},
to: {
id: values[2],
sid: values[0]
},
oneid: {
id: one[key]
}
};
two.push(object);
}
答案 1 :(得分:1)
two.forEach(function(o){
var key = [o.from.sid, o.from.id, o.to.id].join('-');
if(key in one) o.oneid = { id: one[key] };
});