将具有相同属性的两个对象的方法合并到每个属性的数组中 [英] Merge methods of two objects with same properties into array for each property

查看:339
本文介绍了将具有相同属性的两个对象的方法合并到每个属性的数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将两个对象的方法合并为一个,以便为父对象中的每个属性生成一个方法数组:

I'm trying to merge the methods of two objects into one such that an array of methods results for each property in the parent object:

obj1 = {"prop1":"method1","prop2":"method2"}
obj2 = {"prop1":"method3","prop2":"method4"}

期望输出:

obj1 = {"prop1":["method1","method3"],"prop2":["method2","method4"]}

我在考虑使用 $ .extend(obj1,obj2),但这只是替换值而不是创建数组。这项任务真的可行吗?如果是这样,这是怎么做的?

I was thinking of using $.extend(obj1,obj2), but this just replaces values and doesn't create an array. Is this task actually possible? If so, how is this done?

推荐答案

看看这是否有帮助:

var merge = function(/*...objs*/) {
  return [].reduce.call(arguments, function(acc, x) {
    Object.keys(x).forEach(function(k) {
      acc[k] = (acc[k]||[]).concat([x[k]])
    })
    return acc
  },{})
}

var obj1 = {prop1: "method1", prop2: "method2"}
var obj2 = {prop1: "method3", prop2: "method4"}

console.log(merge(obj1, obj2))
//^
// {prop1: ['method1', 'method3'],
//  prop2: ['method2', 'method4']}

这篇关于将具有相同属性的两个对象的方法合并到每个属性的数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆