如何根据对象内的某些匹配插入特定值

时间:2014-07-06 16:18:48

标签: javascript json

我有两个具有以下结构的对象:

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.sidfrom.id。有人可以对此有所了解吗?

2 个答案:

答案 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] };
});
相关问题