将多个数组合并为一个数组而不重复[重复]
Posted
技术标签:
【中文标题】将多个数组合并为一个数组而不重复[重复]【英文标题】:Concat multiple arrays into one array without duplicates [duplicate] 【发布时间】:2017-03-20 05:59:29 【问题描述】:我想将 3 个数组的值推送到一个新数组中而不重复相同的值
var a = ["1", "2", "3"];
var b = ["3", "4", "5"];
var c = ["4", "5", "6"];
var d = [];
function newArray(x, y, z)
for(var i = 0; i < d.length; i++)
if(d.length == -1)
d[i].push(a[i])
for(var i = 0; i < d.length; i++)
if(d.length == -1)
d[i].push(y[i])
for(var i = 0; i < d.length; i++)
if(d.length == -1)
d[i].push(z[i])
newArray(a, b, c);
d = ["1", "2", "3", "4", "5", "6"];
【问题讨论】:
d = [...new Set([...a, ...b, ...c])];
【参考方案1】:
如果您的目标是删除重复项,则可以使用集合,
var arr = [1, 2, 3, 4, 5, 5, 6, 6, 6, 7]
var mySet = new Set(arr)
var filteredArray = Array.from(mySet)
console.log(filteredArray.sort()) // [1,2,3,4,5,6,7]
【讨论】:
与concat
在一行中也能很好地工作,用于将arr2
附加到arr1
:arr1 = Array.from(new Set(arr1.concat(arr2)));
【参考方案2】:
您可以同时使用concat()
和Set
,如下所示,
var a = ["1","2","3"];
var b = ["3","4","5"];
var c = ["4","5","6"];
var d = a.concat(b).concat(c);
var set = new Set(d);
d = Array.from(set);
console.log(d);
【讨论】:
【参考方案3】:var a = ["1","2","3"]
, b = ["3","4","5"]
, c = ["4","5","6"]
, d = [];
function newArray(x,y,z)
x.concat(y,z).forEach(item =>
if (d.indexOf(item) == -1)
d.push(item);
);
return d;
console.log(newArray(a,b,c));
【讨论】:
【参考方案4】:使用非常有用的实用程序库 Lodash,您可以节省一些时间和精力。
你要找的函数是Union
正如 Lodash 所说:
从所有给定的数组中按顺序创建一个唯一值数组 使用 SameValueZero 进行相等比较。
例子
_.union([2], [1, 2]);
// => [2, 1]
【讨论】:
【参考方案5】:var a = ["1", "2", "3"];
var b = ["3", "4", "5"];
var c = ["4", "5", "6"];
var d = [];
var hash = [];
AddToHash(a);
AddToHash(b);
AddToHash(c);
function AddToHash(arr)
for (var i = 0; i < arr.length; i++)
if (!hash[arr[i]])
hash[arr[i]] = 1;
else
hash[arr[i]] += 1;
for (var i = 0; i < hash.length; i++)
d.push(i);
console.log(d);
希望对你有帮助
【讨论】:
【参考方案6】:这是另一个版本:
var d = b.concat(c);
d.forEach(function(el)
if (a.indexOf(el) === -1)
a.push(el)
)
ES6 版本:
let d = b.concat(c);
d.forEach(el =>
if (a.indexOf(el) === -1)
a.push(el)
)
【讨论】:
以上是关于将多个数组合并为一个数组而不重复[重复]的主要内容,如果未能解决你的问题,请参考以下文章