javascript - 在 JS 中扩展和合并两个数组(包含对象)

标签 javascript underscore.js

所以我有数组 A:

   var arrA = [{
      name: 'twitter',
      location: 0,
      hidden: false,
      href: "https://twitter.com/i/connect"
    }, {
      name: 'medium',
      location: 1,
      hidden: false,
      href: "https://medium.com/me/activity"
    }
  ];

和数组B:

var arrB = [{
      name: 'twitter',
      location: 1,
      hidden: false
    }, {
      name: 'medium',
      location: 0,
      hidden: false
    }
  ];

我怎样才能得到一个看起来像这样的数组:

var newArr = [{
      name: 'twitter',
      location: 1,
      hidden: false,
      href: "https://twitter.com/i/connect"
    }, {
      name: 'medium',
      location: 0,
      hidden: false,
      href: "https://medium.com/me/activity"
    }
  ];

所以,这里有两件事,1. location 值取自 arrB,而不是 arrA,2. newArr 的对象现在包含 href 键,取自 arrA

所以我需要第二个数组的值,但是新的键是从第一个数组维护的。

我可以使用 underscore.js 函数执行此操作吗(我现在正在使用 _.extend,但如果它是新的,它不会维护来自 arrA 的 key )?

最佳答案

您可以连接两个数组并使用 Alasql 选择适当的属性图书馆:

var res1 = alasql('SELECT arrA.name, arrB.location, arrA.href, arrB.hidden \
            FROM ? arrA JOIN ? arrB USING name', [arrA,arrB]);

或 Underscore _.extend 版本:

alasql.fn.extend = _.extend.bind(_);
var res2 = alasql('SELECT COLUMN extend(arrA._, arrB._) 
                   FROM ? arrA JOIN ? arrB USING name', [arrA,arrB]);

试试这些例子 at jsFiddle .

关于javascript - 在 JS 中扩展和合并两个数组(包含对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16828864/

相关文章:

javascript - underscore.js _.where 用于字符串和对象

javascript - 错误: Cannot find module '/app/app,js' heroku

javascript - jQuery 中的 CSS 边距减去等于

javascript - 用普通的 for 循环替换下划线或 lodash _.each

javascript - underscore.js - 组合模板

css - 备用 <article> 的目标子项

templates - underscore.js 嵌套模板

javascript - Angular 2 同步文件上传

c# - 文本框自动计算

javascript - 将 JSON 对象添加到 angularjs $scope 中?