2017-10-28 3 views
1

関数のパラメータとして与えられた配列の和集合を作成したいと思います。しかし、私は、このエラーが生じています:関数のパラメータとして与えられた配列の和集合を作成する

Javascript TypeError: Cannot read property 'length' of undefined 

これは私が何をしようとしていますものです:

function uniteUnique(arr) { 

    var newArr = arguments[0]; 

    //Loop arguments 
    for (let i = 0; i<arr.length-1; i++){ 
    console.log(arguments[i]); 

    //Loop second argument values 
    for (let y =0; y<arguments[i+1].length; y++){ 

     //Loop first argument values 
     for (let z=0; z<arguments[i].length; z++){ 
     if (arguments[i+1][y] !== arguments[i][z]){ 
      newArr.push(arguments[i+1][y]); 
     } 

     } 
    } 
    } 
    return arr; 
} 

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]); 

私が欲しい出力は[1、3、2、5、4]であり、ここでは3つの配列からのユニークな値の和集合です。私はこのエラーが発生しています。

TypeError: Cannot read property 'length' of undefined

+2

長さは引数の長さに関係がありません – charlietfl

答えて

1

私は3つのアレイを1つにまとめて複製を削除したいと思っています。次に、次のコードを参考にしてください。最初の配列の

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

使用ES6 features

function unionArg(...args){ 
 
let newtab = [] 
 

 
//Destructuring of each arg which is an array 
 
args.forEach(arg=>{ 
 
    newtab = [...arg,...newtab] 
 
}) 
 

 
//Having all the items in a single array, we will keep only distincts elements 
 
newtab = [...new Set(newtab)] 
 

 
console.log("unique values:" + newtab) 
 

 
} 
 

 
unionArg([1,2,3,1],[0,4,1])

関連する問題