javascript - 将具有相同属性的两个对象的方法合并到每个属性的数组中

标签 javascript jquery arrays json

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

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

期望的输出:

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

我正在考虑使用 $.extend(obj1,obj2),但这只是替换值而不会创建数组。这个任务真的可行吗?如果是这样,这是如何完成的?

最佳答案

看看这是否有帮助:

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']}

关于javascript - 将具有相同属性的两个对象的方法合并到每个属性的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336202/

相关文章:

JavaScript 如何验证控制台中某人更改的值

javascript - 如何从 webpack 中的 Assets url 中删除后缀斜杠 "/"| Gatsby

javascript - GraphQL 突变抛出错误

javascript - 是否有一个工具提示库可以让我向 SVG 元素添加工具提示?

jQuery 函数在输入更改时更新 iFrame 内容

数组和指针版本在内存分配方面的比较

javascript 将回车符添加到字符串以提高可读性

javascript - jqueryui Accordion 根据选项卡禁用特定

php - PHP 数组递归不应该抛出错误吗?

c - C 中的段错误(数组相关)