我想在新数组中推送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"];
答案 0 :(得分:6)
如果您的目标是删除重复项,则可以使用集
var arr = [1,2,3,4,5,5,6,6,6,7]
var mySet = new Set(arr)
var filteredArray = Array.from(mySet)
filteredArray.sort() // [1,2,3,4,5,6,7]
答案 1 :(得分:3)
您可以同时使用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);
答案 2 :(得分:1)
使用非常有用的实用程序库Lodash可以节省一些时间和精力。
您正在寻找的功能是Union
正如Lodash所说:
从所有给定的数组按顺序创建唯一值的数组 使用SameValueZero进行相等比较。
实施例
_.union([2], [1, 2]);
// => [2, 1]
答案 3 :(得分:1)
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 :(得分:0)
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);
希望这有帮助
答案 5 :(得分:0)
这是另一个版本:
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)
}
})