2016-11-06 70 views
2

我要推一个新的阵列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

'当d = [...新组([... A,... B,... C])];' – Azamantes

回答

0

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));

0

你可以保存自己一些时间和精力用在非常有用的工具库Lodash 。

你要找的功能是Union

如前所述通过Lodash:

创建唯一值的数组,按顺序使用SameValueZero平等比较都给阵列 。

_.union([2], [1, 2]); 
// => [2, 1] 
4

如果你的目标是消除重复,你可以使用一组,

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] 
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);

希望这有助于

1

您可以使用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);

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) 
    } 
})