Sorted Union(arguments)

撰寫一個function,功用為return多個array中不重複的元素

  寫一個功能類似java中類似map資料結構的函數,要回傳多個array中不重複的元素。

  function unite(arr1, arr2, arr3) {
  return arguments[3];
}
unite([1, 2, 3], [5, 2, 1, 4], [2, 1], [6, 7, 8]);
關於這題她有給一個javascript的參考文件函數-arguments: 這個函數的功能是可以取得傳入函數的所有參數,例如上述一段code中的argument[3],則可以取得[6,7,8]這個array,而不需使用定義在函數的開頭的參數名稱,因此,就可以不用管有幾個參數傳入,都可以藉由arguments[index]取得各個參數以及arguments.length來取得傳入參數的個數了
function unite(arr1, arr2, arr3) {
  return arguments;
}
unite([1, 2, 3], [5, 2, 1, 4], [2, 1], [6, 7, 8]);
//The outcome indicated below this line
arguments = { "0":[1,2,3],
              "1":[5,2,1,4],
              "2":[2,1],
              "3":[6,7,8]
              };
順道一提,arguments索取得的資料是用Object的key⇒value格式對應,像上面的code
function unite(arr1, arr2, arr3) {
  var arr = [];
  for(var i=0;i<arguments.length;i++)
  {
    for(var j=0;j<arguments[i].length;j++)
    {
      if( arr.indexOf(arguments[i][j]) == -1 )
           arr.push(arguments[i][j]);
    }
  }
  return arr;
}
unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);
unite([1, 2, 3], [5, 2, 1, 4], [2, 1], [6, 7, 8]);

Solution:

這題我對於這題的想法是,用for loop去遍歷(訪問)每個參數(array or data or數組),然後因為是要找出不重複的元素,所以我使用的方法是定義一個空的array,然後用indexOf()在這array裡面尋找傳入的array裡面的元素,如果找不到的話,則使用array.push(element)從array的尾端加入一筆資料。



P.S. / Reference:  原來題目有提示可以用reduce()來做,就題目來說都需要訪問資料結構中每個元素,所以應該2個方法都行。
arguments
Array.prototype.reduce()

results matching ""

    No results matching ""