簡體   English   中英

使用javascript合並multiples數組

[英]merge multiples array with javascript

我需要發送多個數組作為參數,不僅僅是2(是的我使用_underscore來檢查重復的條目)

function arrayMerge(arr1, arr2) {
    arr1 = Object.prototype.toString.call(arr1) === '[object Array]' ? arr1 : [];
    arr2 = Object.prototype.toString.call(arr2) === '[object Array]' ? arr2 : [];   
    return _.uniq(arr1.concat(arr2));
}

我怎樣才能做到這一點? 我想發送不是2,但多個數組作為參數。

你可以使用arguments 變量arguments是傳遞給函數的所有arguments的數組。 所以你可以嘗試這個:

function merge() {
  return _.uniq(Array.prototype.concat.apply([], arguments));
}

我沒有使用下划線的經驗,但這應該有效。

由於concat的行為,調用merge([3, 4, 5], null, 6)將導致[3, 4, 5, null, 6]

確保所有數組都是:

for (var i = 0; i < arguments.length; ++i) {
  if (Object.prototype.toString.call(arguments[i]) !== '[object Array]') {
    throw new Error(arguments[i] + " is not an array"); // Or do whatever you want
  }
}

Soktinpk的答案最適合ES5。

如果您能夠使用ES6,則可以使用rest參數使其更加明確

function merge(...arrays) {
  return _.uniq(Array.prototype.concat.apply([], arrays));
}

與原始代碼一樣檢查數組類型的版本:

function arrayMerge() {
    return _.chain(arguments).filter(_.isArray).flatten().unique().value();
}

演示如下。

 function arrayMerge() { return _.chain(arguments).filter(_.isArray).flatten().unique().value(); } var result = arrayMerge([1,2,3],[1,3,4],'test',[2,3,4,5]); document.write(JSON.stringify(result)); 
 <script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM