อย่างแรกคือวิธีการทั่วไปมากกว่า
ความคิด:
1. สร้างผลการจัดเก็บอาร์เรย์ใหม่
2. ใช้องค์ประกอบจากอาร์เรย์ดั้งเดิมในวงจร For ให้เปรียบเทียบกับอาร์เรย์กับวัฏจักรองค์ประกอบนี้กับผลลัพธ์ขององค์ประกอบนี้
3. หากไม่มีองค์ประกอบดังกล่าวในอาร์เรย์ผลลัพธ์มันจะถูกเก็บไว้ในอาร์เรย์
คัดลอกรหัสรหัสดังนี้:
array.prototype.unique1 = function () {
var res = [สิ่งนี้ [0]];
สำหรับ (var i = 1; i <this.length; i ++) {
var repea = false;
สำหรับ (var j = 0; j <res.length; j ++) {
ถ้า (นี่ [i] == res [j]) {
ทำซ้ำ = true;
หยุดพัก;
-
-
ถ้า (ทำซ้ำ) {
res.push (นี่ [i]);
-
-
Ret Res;
-
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
การแจ้งเตือน (arr.unique1 ());
วิธีที่สองมีประสิทธิภาพมากกว่าวิธีการข้างต้น
ความคิด:
1. เรียงลำดับอาร์เรย์ดั้งเดิมก่อน
2. ตรวจสอบว่าองค์ประกอบแรกในอาร์เรย์ดั้งเดิมนั้นเหมือนกับองค์ประกอบสุดท้ายในอาร์เรย์ผลลัพธ์หรือไม่
3. หากแตกต่างกันให้บันทึกองค์ประกอบลงในอาร์เรย์ผลลัพธ์
คัดลอกรหัสรหัสดังนี้:
array.prototype.unique2 = function () {
this.sort ();
var res = [สิ่งนี้ [0]];
สำหรับ (var i = 1; i <this.length; i ++) {
ถ้า (นี่ [i]! == res.length -1]) {
res.push (นี่ [i]);
-
-
Ret Res;
-
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
การแจ้งเตือน (arr.unique2 ());
วิธีที่สองจะมีข้อ จำกัด บางประการเนื่องจากการเรียงลำดับก่อนการส่งคืนผลตอบแทนสุดท้ายของการส่งคืนครั้งสุดท้ายก็ถูกจัดเรียง หากคำสั่งของอาร์เรย์ไม่จำเป็นต้องเปลี่ยนคำสั่งซื้อวิธีนี้จะไม่สามารถใช้วิธีนี้ได้
วิธีที่สาม (แนะนำ)
ความคิด:
1. สร้างผลการจัดเก็บอาร์เรย์ใหม่
2. สร้างวัตถุเปล่า
3. เมื่อวงจรใช้องค์ประกอบและวัตถุในแต่ละครั้งเพื่อเปรียบเทียบ
หมายเหตุ: สำหรับวิธีการเปรียบเทียบให้ใช้องค์ประกอบจากอาร์เรย์ดั้งเดิมแล้วเข้าถึงแอตทริบิวต์นี้ในวัตถุ
คัดลอกรหัสรหัสดังนี้:
array.prototype.unique3 = function () {
var res = [];
var json = {};
สำหรับ (var i = 0; i <this.length; i ++) {
ถ้า (! json [นี่ [i]]) {
res.push (นี่ [i]);
JSON [นี่ [i]] = 1;
-
-
Ret Res;
-
var arr = [112,112,34, 'สวัสดี', 112,112,34, 'สวัสดี', 'str', 'str1'];
การแจ้งเตือน (arr.unique3 ());