㈠ js數組去重常見的七種方法
直接給一個新的數組裡面,利用es6的延展運算符
filter() 方法創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。item是當前元素的值,index是當前元素的索引值。indexOf() 方法可返回某個指定的字元串值在字元串中首次出現的位置。利用indexOf() 查詢到數組的下標,看是否等於當前的下標,相等的話就返回,否則不返回值。
5、藉助新數組 通過 indexOf 方法判斷當前元素在數組中的索引,如果與循環的下標相等則添加到新數組中
6、利用雙重for循環
7、利用includes實現數組去重
以上就是比較常用的七種方法了,有不懂的留言吧。
㈡ js中數組去重的幾種方法
function clear(arr) {
// 1 如何獲取數組中每一個元素出現的次數
var o = {}; // 1.1 記錄數組中元素出現的次數
for (var i = 0; i < arr.length; i++) {
var item = arr[i]; // 數組中的每一個元素
// o[item] = 1;
// 1.2 判斷o對象是否有當前遍歷到的屬性
if (o[item]) {
// 如果o[item] 存在,說明次數不為1
o[item]++;
} else {
// 如果o[item] 不存在,說明是第一次出現
o[item] = 1;
}
}
// console.log(o);
// 2 生成一個新的數組,存儲不重復的元素
var newArray = [];
// 2.1 遍歷對象o中的所有屬性
for (var key in o) {
// 2.2 判斷o對象中當前屬性的值是否為 1 如果為1 說明不重復直接放到新數組中
if (o[key] === 1) {
newArray.push(key);
} else {
// o對象中當前屬性 次數不為1 ,說明有重復的,如果有重復的話,只存儲一次
// 判斷當前的newArray數組中是否已經有該元素
if (newArray.indexOf(key) === -1) {
newArray.push(key);
}
}
}
return newArray;
}
var array = ['c', 'a', 'z', 'a', 'x', 'a'];
var newArray = clear(array);
console.log(newArray);
㈢ js怎麼去除數組中的重復的數據
這就是數組去重了。。。
var str=['hello','node','element','node','hello','blue','red'];
var str1=[];
function first(args){
for(i=0;i<args.length;i++){
if(str1.indexOf(args[i])<0){
str1.push(args[i])
}
}
return str1;
}
first(str);
console.log(str1)
參考一下。。。從str數組中依次插入數據到str1數組中,str1.indexOf(args[i])這段是表示查詢str1數組中是否存在str中要插入的數據。。返回false,即-1,表示沒有,則將str中此數據插入到str1中,否則不執行,進行下一次循環。。
㈣ javascript怎樣數組去重並排序.效率最快的
以下是我針對網上三種高效率方法總結與效率測試,如果大家有更好的意見或建議也可以提出,大家共勉學習。
數組去重法1:
Array.prototype.unique1 = function(){ console.time("數組去重法1"); //記錄開始執行的時間 var arr = []; //創建一個臨時數組 var obj = {}; //創建一個空對象 for(var i = 0; i < this.length; i++){ //遍歷當前要去重的數組 if(!obj[this[i]]){ //判斷obj對象中是否存有當前項,沒有則執行 arr.push(this[i]); //將當前項push到臨時數組中 obj[this[i]] = 1; //將當前項存入obj對象 } } console.timeEnd("數組去重法1"); //記錄結束執行的時間 return arr; }
數組去重法2:
Array.prototype.unique2 = function(){ console.time("數組去重法2"); //記錄開始執行的時間 var arr = []; //創建一個臨時數組 for(var i = 0; i < this.length; i++){ //遍歷當前要去重的數組 if(arr.indexOf(this[i]) == -1){ //判斷臨時數組中是否存有當前項,沒有則執行 arr.push(this[i]); //將當前項push到臨時數組中 } } console.timeEnd("數組去重法2"); //記錄結束執行的時間 return arr; }
數組去重法3:
Array.prototype.unique3 = function(){ console.time("數組去重法3"); //記錄開始執行的時間 var arr = [this[0]]; //創建一個臨時數組,並將要去重數組的第一項存入臨時數組 for(var i = 1; i < this.length; i++) { //從要去重數組第二項開始遍歷 if (this.indexOf(this[i]) == i){ //判斷臨時數組中是否存有當前項,沒有則執行 arr.push(this[i]); //將當前項push到臨時數組中 } } console.timeEnd("數組去重法3"); //記錄結束執行的時間 return arr; }
效率測試方法:
var arr1 = []; //創建一個要去重的數組 for(var i = 0; i < 200000; i++){ //遍歷200000個數據 arr1.push(parseInt(Math.random() * 10) + 1); //將所有數據返回為隨機數(1-10之間)的數, 並push到要去重的數組中 } console.log(arr1.unique1()); //列印數組去重法1的執行時間 console.log(arr1.unique2()); //列印數組去重法2的執行時間 console.log(arr1.unique3()); //列印數組去重法3的執行時間
效率測試結果:
總結
以上就是關於JavaScript幾種數組去重的方法效率測試,希望測試的結果對大家選擇使用數組去重方法能有所幫助,如果有疑問大家可以留言交流。謝謝大家對腳本之家的支持。
㈤ JS數組去重的幾種常見方法
js 數組去重
1
註:應該也可以適用於 object數組,但是本人沒有進行驗證,貼出來僅供你參考
第一種是比較常規的方法思路:1.構建一個新的數組存放結果2.for循環中每次從原數組中取出一個元素,用這個元素循環與結果數組對比3.若結果數組中沒有該元素,則存到結果數組中代碼如下:
Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i < this.length; i++){ var repeat = false; for(var j = 0; j < res.length; j++){ if(this[i] == res[j]){ repeat = true; break; } } if(!repeat){ res.push(this[i]); } } return res;}var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]alert(arr.unique1());
第二種方法比上面的方法效率要高思路:1.先將原數組進行排序2.檢查原數組中的第i個元素 與 結果數組中的最後一個元素是否相同,因為已經排序,所以重復元素會在相鄰位置3.如果不相同,則將該元素存入結果數組中代碼如下:
Array.prototype.unique2 = function(){ this.sort(); //先排序 var res = [this[0]]; for(var i = 1; i < this.length; i++){ if(this[i] !== res[res.length - 1]){ res.push(this[i]); } } return res;}var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]alert(arr.unique2());
二種方法也會有一定的局限性,因為在去重前進行了排序,所以最後返回的去重結果也是排序後的。如果要求不改變數組的順序去重,那這種方法便不可取了。第三種方法(推薦使用)思路:1.創建一個新的數組存放結果2.創建一個空對象3.for循環時,每次取出一個元素與對象進行對比,如果這個元素不重復,則把它存放到結果數組中,同時把這個元素的內容作為對象的一個屬性,並賦值為1,存入到第2步建立的對象中。說明:至於如何對比,就是每次從原數組中取出一個元素,然後到對象中去訪問這個屬性,如果能訪問到值,則說明重復。代碼如下:
Array.prototype.unique3 = function(){ var res = []; var json = {}; for(var i = 0; i < this.length; i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } return res;}var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];alert(arr.unique3());
㈥ js去掉數組中重復的元素
可以使用雙重循環,逐一對比元素,如有重復,則刪除的方法去重。
其思路為
1、依來次遍歷循環中的每一個元素。
2、對於任意一個元素,依次與之前的元素進行對比,如果有自重復則刪除。
3、刪除操作可以採用將後續元素逐個前移,達到覆蓋當前元素的效果。
在此基礎上可以進行一點優化,即,不需要每次刪除元素均前移所有元素,而是把需要保留的元素放到"應該"放的位置即可,這樣可以提高效率。
以整型數組為例,參考代碼如下:
int remove_repeat(int *a, int l)//對起始地址為a,長度為l的數組進行去重,新的長度以返回值形式返回。
{
int i,j, r=0; //i,j為循環下標,r為去重後元素總數,初始值為0
for(i = 0; i < l; i ++)
{
for(j = 0; j < r; j ++)//檢查是否重復
if(a[j] == a[i]) break;
if(j == r) //沒有重復元素
a[r++] = a[i]; //將當前元素放置與去重後數組的尾部,並增加去重後的總數。
}
return r; //返回新的長度。
}
㈦ js 中如何去掉數組中的重復的數據
可以使用js的for循環篩選實現去掉數組中的重復的數據。
具體步驟如下:
需要准備的材料分別是:電腦、瀏覽器、ultraedit。
1、在ue編輯器中新建一個空白的html文件,js文件。