首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript中获取两个数组的并集

在JavaScript中获取两个数组的并集
EN

Stack Overflow用户
提问于 2010-09-03 01:58:43
回答 21查看 153.2K关注 0票数 88

假设我有一个[34, 35, 45, 48, 49]数组和另一个[48, 55]数组。如何获得[34, 35, 45, 48, 49, 55]的结果数组

EN

回答 21

Stack Overflow用户

回答已采纳

发布于 2010-09-03 02:05:45

如果您不需要保持顺序,并认为45"45"是相同的:

代码语言:javascript
运行
复制
function union_arrays (x, y) {
  var obj = {};
  for (var i = x.length-1; i >= 0; -- i)
     obj[x[i]] = x[i];
  for (var i = y.length-1; i >= 0; -- i)
     obj[y[i]] = y[i];
  var res = []
  for (var k in obj) {
    if (obj.hasOwnProperty(k))  // <-- optional
      res.push(obj[k]);
  }
  return res;
}

console.log(union_arrays([34,35,45,48,49], [44,55]));

票数 52
EN

Stack Overflow用户

发布于 2015-01-17 15:03:49

随着带有sets和splat操作符的ES6的到来(当时它只在火狐中工作,请检查兼容性表),你可以编写以下神秘的一行代码:

代码语言:javascript
运行
复制
var a = [34, 35, 45, 48, 49];
var b = [48, 55];
var union = [...new Set([...a, ...b])];
console.log(union);

关于这一行的简单解释:[...a, ...b]连接两个数组,你也可以使用a.concat(b)new Set()为它创建一个集合,从而创建您的联盟。最后一个[...x]将其转换回数组。

票数 161
EN

Stack Overflow用户

发布于 2012-05-02 20:19:16

如果使用库下划线,则可以这样写

代码语言:javascript
运行
复制
var unionArr = _.union([34,35,45,48,49], [48,55]);
console.log(unionArr);
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

参考http://underscorejs.org/#union

票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3629817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档