Ringkasan kaedah penyahduplikasian tatasusunan js_kemahiran javascript

WBOY
Lepaskan: 2016-05-16 15:48:09
asal
1386 orang telah melayarinya

Tiga kaedah

Gunakan indexOf untuk menentukan tatasusunan baharu

Indeks yang serupa
sebenarnya digunakan dalam underscore.js

 //传入数组
 function unique1(arr){
  var tmpArr = [];
  for(var i=0; i<arr.length; i++){
   //如果当前数组的第i已经保存进了临时数组,那么跳过,
   //否则把当前项push到临时数组里面
   if(tmpArr.indexOf(arr[i]) == -1){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }
Salin selepas log masuk

Gunakan indexOf untuk menentukan tatasusunan lama

 function unique2(arr){
  var tmpArr = []; //结果数组
  for(var i=0; i<arr.length; i++){
   //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
   //那么表示第i项是重复的,忽略掉。否则存入结果数组
   if(arr.indexOf(arr[i]) == i){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }

Salin selepas log masuk

Gunakan cincang untuk mencari

Pelaksanaan objek JS yang digunakan di sini ialah ciri-ciri jadual cincang

 function unique3(arr){
  var tmpArr = [], hash = {};//hash为hash表
  for(var i=0;i<arr.length;i++){
   if(!hash[arr[i]]){//如果hash表中没有当前项
    hash[arr[i]] = true;//存入hash表
    tmpArr.push(arr[i]);//存入临时数组
   }
  }
  return tmpArr;
 }
Salin selepas log masuk

Peluasan tatasusunan

 Array.prototype.unique1 = function (){
  var tmpArr = []; 
  for (var i = 0; i < this.length; i++){
   if (tmpArr.indexOf(this[i]) == -1){
    tmpArr.push(this[i]);
   }
  }
  return tmpArr;
 }

 Array.prototype.unique2 = function(){
   var tmpArr = []; //结果数组
   for(var i = 0; i < this.length; i++){
    if (this.indexOf(this[i]) == i){
     tmpArr.push(this[i]);
    }
   }
   return tmpArr;
 }

 Array.prototype.unique3 = function(){
   var tmpArr=[], hash = {};
   for(var i = 0; i < this.length; i++){
    if (!hash[this[i]]){
      hash[this[i]] = true; 
      tmpArr.push(this[i]); 
    }
   }
   return tmpArr;
 }

Salin selepas log masuk

Set Guna

Set dan Peta ialah struktur data baharu dalam ES6
Set boleh menyimpan terus set bukan pendua kunci ini juga boleh menjadi objek, rentetan, dsb.
Buat set

var s = new Set([1, 2, 3,]);
s; // Set {1, 2, 3}

Salin selepas log masuk

Elemen baharu

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}//重复元素不会被添加

Salin selepas log masuk

Padam elemen

s; // Set {1, 2, 3, 4}
s.delete(3);
s; // Set {1, 2, 4}

Salin selepas log masuk

Unsur lintasan

Peta dan Set tidak boleh menggunakan subskrip
Piawaian ES6 memperkenalkan jenis lelaran baharu, Peta dan Set semuanya tergolong dalam jenis boleh lelar

var s = new Set(['A', 'B', 'C']);

for (var x of s) { // 遍历Set
  alert(x);
}

Salin selepas log masuk

Atau terus gunakan kaedah terbina dalam iterable untukSetiap
Kaedah forEach diperkenalkan oleh standard ES5.1

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, set) {
  alert(element);
});
Salin selepas log masuk

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan