假设我有一个[34, 35, 45, 48, 49]数组和另一个[48, 55]数组。如何获得[34, 35, 45, 48, 49, 55]的结果数组
发布于 2010-09-03 02:05:45
如果您不需要保持顺序,并认为45和"45"是相同的:
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]));
发布于 2015-01-17 15:03:49
随着带有sets和splat操作符的ES6的到来(当时它只在火狐中工作,请检查兼容性表),你可以编写以下神秘的一行代码:
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]将其转换回数组。
发布于 2012-05-02 20:19:16
如果使用库下划线,则可以这样写
var unionArr = _.union([34,35,45,48,49], [48,55]);
console.log(unionArr);<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
参考:http://underscorejs.org/#union
https://stackoverflow.com/questions/3629817
复制相似问题