一、陣列合併的兩種方法
1、concat--合併陣列,並且不去重
var arr1 = ["ab","bc","de","fg"];2、自定義陣列合併並去重函式var arr2 = ["ml","kg","ww","bc","am"];
var arr3 = arr1.concat(arr2);
console.log(arr3)
var arr1 = ["ab","bc","de","fg"];注意:indexof是ecma5的新方法,ie8及以下不支援,所以要做相容性處理。var arr2 = ["ml","kg","ww","bc","am"];
function mergearray(arr1,arr2)
return n;
}
if (array.prototype.indexof)3、陣列下標判斷法for (var i = 0,len=this.length;i
2、物件鍵值對法
該方法執行的速度比其他任何方法都快,但就是占用的記憶體大一些
實現思路:新建乙個js物件以及新陣列,遍歷要去重的陣列時,判斷值是否是js物件的鍵。不是的話,給物件新增該鍵並放入新陣列。
注意:判斷是否為物件鍵時,會自動對傳入的鍵執行『tostring()』,不同的鍵可能會被誤認為是一樣的,如:a[1]與a['1']。解決該問題還是得呼叫「indexof」.
function uniquearr(arr) ,
r = ,
len = arr.length,
val, type;
for (var i = 0; i < len; i++) else if (n[val].indexof(type) < 0)
};return r;
}console.log(uniquearr([1,2,[1,2,3],,'1',2,'4','6']))
還是得呼叫「indexof」效能跟方法1差不多,
實現思路:如果當前陣列的第i項在當前陣列中第一次出現的位置不是i,那麼表示第i項是重複的,忽略掉。否則存入結果陣列。
缺點:如果陣列中的值為undefined,則會剔除,不在新陣列中。
function uniquearr(array)4、排序後相鄰除法return n;
}console.log(uniquearr([1, 2, [1, 2, 3], , '1', 2, '4', '6']))
雖然原生陣列的」sort」方法排序結果不怎麼靠譜,但在不注重順序的去重里,該缺點毫無影響。
實現思路:給傳入陣列排序,排序後相同值相鄰,然後遍歷時新陣列只加入不與前一值重複的值。
function uniquearr(array)5、優化遍歷陣列法}return n;
}console.log(uniquearr([1, 2, [1, 2, 3], , '1', 2, '4', '6']))
// 思路:獲取沒重複的最右一值放入新陣列function uniquearr(array)
return r;
}console.log(uniquearr([1, 2, [1, 2, 3], , '1', 2, '4', '6']))
js多層物件陣列 合併 JS物件陣列合併去重?
陣列去重,一般會在面試的時候才會碰到,要求手寫陣列去重方法的 如果是被提問到,陣列去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。在實際專案中碰到的陣列去重,一般都是後台去處理,很少讓前端處理陣列去重。雖然運用到的概率較低,但還是需要了解一下,以防面試的時候被問到。陣列去重的方法...
js多層物件陣列 合併 JS物件陣列合併去重?
陣列去重,一般會在面試的時候才會碰到,要求手寫陣列去重方法的 如果是被提問到,陣列去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。在實際專案中碰到的陣列去重,一般都是後台去處理,很少讓前端處理陣列去重。雖然運用到的概率較低,但還是需要了解一下,以防面試的時候被問到。陣列去重的方法...
JS 陣列,陣列物件的合併去重方法
這次對陣列的操作,我們使用es6的新語法來完成,所以在看下邊 之前,我們要了解我們下邊要用到的es6中的set集合,和for.of 方法 es6提供了新的資料結構set,它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set函式可以接受乙個陣列 或類似陣列的物件 作為引數,用來初始化。注意 向s...