再する方法のJavaScriptの配列
コードの重複排除アレー、一般インタビューの中で、多くの場合に尋ねるか、一般的に手書きの重複排除方法の配列が必要です
、ES5は、最も一般的に使用するため営巣のために使用され、その後、再スプライスをします
function unique(arr){
for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
//第一个等同于第二个,splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组
if(arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
var arr = [1,2,3,4,5,6,2,4,6,8];
console.log(unique(arr))
复制代码
第二に、設定の重複排除機能を使用すると、ES6(ES6ための設定方法)
function unique (arr) {
return Array.from(new Set(arr))
}
var arr = [1,2,3,4,5,6,2,4,6,8];
console.log(unique(arr))
复制代码
互換性は、この重複排除方法コードは、最小であると見なされていないECMAScriptのエントリ。6
第三に、使用のindexOf重複除外
var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2];
function unique(){
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) == -1 ) {
newArr.push(arr[i]);
}
}
console.log(newArr);
}
unique(arr);
复制代码
取得した値が一致しない場合のindexOf()メソッドをもたらし、それは-1を返します。
第四に、使用するソート()
var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2];
function unique2(arr){
arr.sort();
var newArr = [arr[0]],
len = arr.length;
for(var i = 1; i < len; i++){
if(arr[i] !== newArr[newArr.length - 1] ){
newArr.push(arr[i]);
}
}
return newArr;
}
console.log( unique2(arr) );
复制代码
第五に、オブジェクトのプロパティの重複排除機能の使用
繰り返される場合、配列の各要素は、元の取り出し、及び、オブジェクトプロパティにアクセスされ、それが示します
function unique(arr){
var res =[];
var json = {};
for(var i=0;i<arr.length;i++){
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
}
var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2];
console.log(unique(arr))
复制代码
第六に、本方法は、アレイのプロトタイプオブジェクトの使用を含みます
function unique(arr){
var res = [];
for(var i=0; i<arr.length; i++){
if( !res.includes(arr[i]) ){ // 如果res新数组包含当前循环item
res.push(arr[i]);
}
}
return res;
}
console.log(unique([1,1,2,3,4,5,3,2,3,6,7,4]));
复制代码