js 去重及去掉陣列中的空值

2022-08-27 19:42:09 字數 1644 閱讀 9643

1.陣列去重

var arr = ["1343", "rere", "1343", "rerd"];

array.prototype.unique = function();

for(var i = 0; i < this.length;i++)

} console.log(json);//

return res;

}console.log(arr.unique());//["1343", "rere", "rerd"]

var qcsz = arr.unique().join("、");//可以轉換為字串

console.log(qcsz);//1343、rere、rerd

思路:先建立乙個空陣列,和空物件;迴圈遍歷陣列元素;若是json[this[i] 是 undefined,則 !undefined 為 true,通過 res.push 將元素存到新的陣列裡,並且用json[this[i]] = 1的方法,給json物件增加新的屬性;若是 json[this[i] 不為 undefined,為已賦值的1,則說明元素已存在,則不進入函式體;故可起到函式去重的作用。

array.prototype.unique方法是為 array的原型上,增加乙個unique方法,這樣所有的array都可以去繼承這個方法,其中的this,指向呼叫unique方法的陣列;

判斷依據:

console.log(!undefined);//true

console.log(!1);//false

console.log(!-1);//false

物件增加屬性示例:

var obj = {};

console.log(obj);//{}

obj["arr"] = 1;

console.log(obj);//

console.log(obj["arr"]);//1

console.log(obj.arr);//1

以上方法有個bug,若陣列為var arr = [1,34,4,2,5,"1",3,4,"2"] 時,使用該方法去重後,陣列內容將是:[1, 34, 4, 2, 5, 3];

可以使用indexof()方法,實現去重。//indexof() 方法可返回某個指定的字串值在字串中首次出現的位置。

var arr = [1,34,4,2,5,"1",3,4,"2"];

var temp = ;

function uniqe(arr),,,

,,];var newarr = ;

var obj={};

//比較陣列內的屬性,並將其新增為obj的物件

for (var i = 0, length = arr.length; i < length; i++)

}console.log(newarr) //這就是去重後的陣列物件

3.去掉陣列中的空值

var newarr = [1,4,"143",,"ste",,123,"",34];

function removeempty(arr)

}return arr;

};removeempty(newarr);//[1, 4, "143", "ste", 123, 34]

js中陣列去重

js中的陣列去重 1.建立乙個新陣列,把陣列中的每乙個元素插入到新陣列中 2.遍歷原陣列中每乙個元素分別和新陣列中的每乙個元素進行比較 第一種去重方法 原陣列 var arr 1 2,5 41,1 2,1 4,5 8,10 新陣列 var t t 0 arr 0 arr中的每乙個元素 for var...

JS中陣列的去重

前言,有一次去面試,面試官問我乙個陣列去重題。有哪些方法可以實現。當時第一反應是hash去重,第乙個想法是自己去實現去重演算法,太弱了 不過在es6中新加的set類就是乙個hash集合的實現,現在我們就用set來實現下去重。首先生成乙個帶有重複元素的陣列 0,1,1,2,2,3,3,4,4,5 va...

JS中陣列去重問題

js中陣列去重問題 我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍...