本文目錄一覽:
js去掉數組中重複的元素
可以使用雙重循環,逐一對比元素,如有重複,則刪除的方法去重。
其思路為
1、依來次遍歷循環中的每一個元素。
2、對於任意一個元素,依次與之前的元素進行對比,如果有自重複則刪除。
3、刪除操作可以採用將後續元素逐個前移,達到覆蓋當前元素的效果。
在此基礎上可以進行一點優化,即,2113不需要每次刪除元素均前移所有元素,而是把需要保留的元素放到”應該”放的位置即可,這樣可以提高效率。5261
以整型數組4102為例,參考代碼如下:
int remove_repeat(int *a, int l)//對起始地址為a,長度為l的數組進行去重,新的長度以返回值形式返回。
{
int i,j, r=0; //i,j為循環下標,r為去重後1653元素總數,初始值為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怎麼去除數組中的重複的數據
這就是數組去重了。。。
var str=[‘hello’,’node’,’element’,’node’,’hello’,’blue’,’red’];
var str1=[];
function first(args){
for(i=0;iargs.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中,否則不執行,進行下一次循環。。
js中怎麼去除數組中重複的數據
有個簡單的辦法,先創建一個空的對象:
var dict = {};
然後遍歷整個數組,對其中的每一項,作為對象的屬性添加到對象中:
for (var i = 0; i arr.length; i++) {
dict[arr[i]] = arr[i];
}
然後對象dict中非空的屬性和屬性值就是數組去除重複後剩下的內容:
for (var d in dict) {
if (d) {
// 在此處對去除重複後的每一項做處理
console.log(d);
}
}
js刪除數組中重複的值
例如:var student = [『qiang’,’ming’,’tao’,’li’,’liang’,’you’,’qiang’,’tao’];
第一種思路是:遍歷要刪除的數組arr, 把元素分別放入另一個數組tmp中,在判斷該元素在arr中不存在才允許放入tmp中
用到兩個函數:for …in 和 indexOf()
script type=”text/javascript” var student = [‘qiang’,’ming’,’tao’,’li’,’liang’,’you’,’qiang’,’tao’]; function unique(arr){ // 遍歷arr,把元素分別放入tmp數組(不存在才放) var tmp = new Array(); for(var i in arr){ //該元素在tmp內部不存在才允許追加 if(tmp.indexOf(arr[i])==-1){ tmp.push(arr[i]); } } return tmp; } /script
第二種思路是:把目標數組arr的元素值和鍵的位置調換 自動就把重複的元素給刪除掉了,調換後的樣子:array(‘qiang’=1,’ming’=1,’tao’=1)
script type=”text/javascript” var student = [‘qiang’,’ming’,’tao’,’li’,’liang’,’you’,’qiang’,’tao’]; function unique(arr){ var tmp = new Array(); for(var m in arr){ tmp[arr[m]]=1; } //再把鍵和值的位置再次調換 var tmparr = new Array(); for(var n in tmp){ tmparr.push(n); } return tmparr; } /script
Js中去除數組中重複元素的幾種方法
方法1:
[js] view plain copy
Array.prototype.method1 = function(){
var arr[]; //定義一個臨時數組
for(var i = 0; i this.length; i++){ //循環遍歷當前數組
//判斷當前數組下標為i的元素是否已經保存到臨時數組
//如果已保存,則跳過,否則將此元素保存到臨時數組中
if(arr1.indexOf(this[i]) == -1){
arr.push(this[i]);
}
}
return arr;
}
方法2:
[js] view plain copy
Array.prototype.method2 = function(){
var h{}; //定義一個hash表
var arr[]; //定義一個臨時數組
for(var i = 0; i this.length; i++){ //循環遍歷當前數組
//對元素進行判斷,看是否已經存在表中,如果存在則跳過,否則存入臨時數組
if(!h[this[i]]){
//存入hash表
h[this[i]] = true;
//把當前數組元素存入到臨時數組中
arr.push(this[i]);
}
}
return arr;
}
方法3:
[js] view plain copy
Array.prototype.method3 = function(){
//直接定義結果數組
var arr[this[0]];
for(var i = 1; i this.length; i++){ //從數組第二項開始循環遍歷此數組
//對元素進行判斷:
//如果數組當前元素在此數組中第一次出現的位置不是i
//那麼我們可以判斷第i項元素是重複的,否則直接存入結果數組
if(this.indexOf(this[i]) == i){
arr.push(this[i]);
}
}
return arr;
}
方法4:
[js] view plain copy
Array.prototype.method4 = function(){
//將數組進行排序
this.sort();
//定義結果數組
var arr[this[0]];
for(var i = 1; i this.length; i++){ //從數組第二項開始循環遍曆數組
//判斷相鄰兩個元素是否相等,如果相等說明數據重複,否則將元素寫入結果數組
if(this[i] !== arr[arr.length – 1]){
arr.push(this[i]);
}
}
return arr;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159308.html