Drei Methoden
Verwenden Sie indexOf, um das neue Array zu bestimmen
Ein ähnlicher indexOf
wird tatsächlich in underscore.js verwendet
//传入数组 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; }
Verwenden Sie indexOf, um das alte Array zu bestimmen
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; }
Verwenden Sie Hash zum Suchen
Die hier verwendete Implementierung der JS-Objekte entspricht den Merkmalen der Hash-Tabelle
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; }
Array-Erweiterung
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; }
Set verwenden
Set und Map sind neue Datenstrukturen in ES6
Set kann einen nicht doppelten Schlüsselsatz direkt speichern. Dieser Schlüssel kann auch ein Objekt, eine Zeichenfolge usw. sein.
Set erstellen
var s = new Set([1, 2, 3,]); s; // Set {1, 2, 3}
Neues Element
>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}//重复元素不会被添加
Element löschen
s; // Set {1, 2, 3, 4} s.delete(3); s; // Set {1, 2, 4}
Elemente traversieren
Map und Set können keine Indizes verwenden
Der ES6-Standard führt einen neuen iterierbaren Typ ein. Array, Map und Set gehören alle zu iterierbaren Typen
var s = new Set(['A', 'B', 'C']); for (var x of s) { // 遍历Set alert(x); }
Oder verwenden Sie direkt die integrierte forEach-Methode von iterable
Die forEach-Methode wird durch den ES5.1-Standard
var s = new Set(['A', 'B', 'C']); s.forEach(function (element, set) { alert(element); });
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.