Trois méthodes
Utilisez indexOf pour déterminer le nouveau tableau
Un indexOf similaire
est actuellement utilisé dans 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; }
Utilisez indexOf pour déterminer l'ancien tableau
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; }
Utilisez le hachage pour rechercher
L'implémentation des objets JS utilisés ici correspond aux caractéristiques de la table de hachage
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; }
Extension du tableau
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; }
Utiliser Ensemble
Set et Map sont de nouvelles structures de données dans ES6
Set peut stocker directement un ensemble de clés non dupliquées. Cette clé peut également être un objet, une chaîne, etc.
.
Créer un ensemble
var s = new Set([1, 2, 3,]); s; // Set {1, 2, 3}
Nouvel élément
>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}//重复元素不会被添加
Supprimer l'élément
s; // Set {1, 2, 3, 4} s.delete(3); s; // Set {1, 2, 4}
Éléments traversants
Map et Set ne peuvent pas utiliser d'indices
La norme ES6 introduit un nouveau type itérable Array, Map et Set appartiennent tous à des types itérables
.
var s = new Set(['A', 'B', 'C']); for (var x of s) { // 遍历Set alert(x); }
Ou utilisez directement la méthode forEach intégrée à iterable
La méthode forEach est introduite par la norme ES5.1
var s = new Set(['A', 'B', 'C']); s.forEach(function (element, set) { alert(element); });
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.