1. Méthodes Indexof et LastIndexof:
Étant donné que IE7 rapportera une erreur en utilisant l'indexof sur un objet Array, il est nécessaire de réécrire une compatibilité.
La copie de code est la suivante:
Array.prototype.lastIndexof (item, index) {
var n = this.length, i = (index == null || index> n-1)? n-1: index;
if (i <0) i = n + i;
pour (; i> = 0; i--)
if (this [i] === élément) // jugement consolidar, indexof, lastIndexof
retour i;
retour -1;
}
2. Méthode de la molette: mélangez le tableau.
La copie de code est la suivante:
fonction shuffle (cible) {
var i = cible.length, j, temp;
pour (; i> 0; j = parseInt (math.random () * i), x = cible [- i], cible [i] = cible [j], cible [j] = x) {}
// En supposant la longueur = 10, puis après math.random () * 10 -> [0,10), ParseInt, [0,9], sélectionnez au hasard un et échangez-le avec le dernier élément du tableau. La deuxième boucle, [0,8], échange avec l'avant-dernier terme du tableau.
cible de retour;
}
3. APLAPER le processus de tableau: aplatir, retourner un tableau unidimensionnel
La copie de code est la suivante:
Fonction aplaten (arr) {
var result = [];
arr.ForEach (fonction (item) {
if (array.isArray (item)) result.concat (aplaten (item));
else result.push (item);
});
Résultat de retour;
}
4. Méthode unique: Fonctionnement de déduplication du tableau
Cette méthode est que l'intervieweur aime demander, car il a plusieurs méthodes de mise en œuvre, la plus courante est les deux pour les boucles. La chose la plus courante que je connaisse est d'utiliser un objet A, puis a pour le tableau de boucle Arr. Chaque fois que (a [arr [i]]) existe, et s'il n'existe pas, il sera poussé dans votre résultat de tableau nouvellement défini. L'existence prouve, se répète, il n'est donc pas nécessaire de pousser dans le résultat. Cette solution, pour "123", 123, sera considérée comme la même. En fait, l'un est une chaîne et l'autre est un nombre et ne doit pas être considéré comme le même.
Ainsi, la méthode suivante apparaît: [1, "1", "1"]
La copie de code est la suivante:
if ((typeof obj [array [i]])! = (typeof array [i]) || obj [array [i]]! = array [i]) {
a.push (array [i]);
obj [array [i]] = array [i];
}
// Déterminez d'abord si les types sont les mêmes. S'ils sont les mêmes, déterminez si leurs valeurs sont égales. S'ils ne sont pas égaux, ils seront sauvés. S'ils sont égaux, ils prouveront que cette valeur a déjà existé.
Si les types sont différents, il y a deux situations ici.
Dans le premier cas, OBJ a déjà enregistré ces données avant, par exemple: obj [123] = 123, maintenant array [i] = "123". À l'heure actuelle, le type OBJ [array [i]]) est un nombre, et le type de tableau [i] est une chaîne, donc il est stocké dans le tableau.
Le deuxième cas est qu'Obj n'a pas encore enregistré ces données, par exemple: array [i] = "123", obj ["123"] = indéfini. À l'heure actuelle, le type OBJ [tableau [i]]) est type de non défini = non défini, ce qui n'est pas égal au type de tableau [i] et est stocké dans le tableau.
Cette méthode peut résoudre la situation où les chaînes et les nombres sont les mêmes, mais ne peuvent pas résoudre la situation où les objets sont les mêmes. Par exemple: a = {1: 2}, b = {2: 1};
Lorsque la première boucle, typeof obj [a] = non défini, typeof a = objet. Dépôt obj [a] = a. En fait, obj [objet] = a;
Dans la deuxième boucle, le type OBJ [b] est égal au type OBJ [objet], qui est en fait le type de a = objet, typeof b = objet. Par conséquent, il entre obj [array [i]]! = Array [i] |, c'est-à-dire obj [b] -> obj [objet] -> a! = b, donc déposé
obj [b] = b; c'est-à-dire obj [objet] = b; Écrase l'OBJ [objet] précédent = a;
Dans ce cas, tous les objets apparaîtront et seule la dernière valeur d'objet sera stockée.
Lorsque vous envisagez des objets, j'utilise la méthode suivante:
La copie de code est la suivante:
pour (var i = 0; i <temp.length; i ++) {
pour (var j = i + 1; j <temp.length; j ++) {
if (temp [i] === temp [j]) {
Temp.splice (J, 1);
J-;
}
}
}
Tempère de retour;
5. Tri de tableau: méthode de tri. Si l'objet que vous souhaitez trier est un objet, vous pouvez écrire une compare (a, b) {if (a.age> b.age) return 1; else return -1;}, a.sort (comparer).
6.min renvoie la valeur minimale du tableau: return math.min.apply (0, array);
7. Unhift ne renvoie pas la longueur du tableau sous IE6,7.
La copie de code est la suivante:
Si ([]. Unhift (1)! == 1) // Ajoutez un élément de la précédente à un tableau vide, d'autres navigateurs retourneront 1, tandis que IE6 et 7 ne retourneront pas la longueur du tableau. Exécuter l'instruction if
{
var _unshift = array.prototype.unshift; // Fonction de détournement.
Array.prototype.unshift = function () {
_unShift.Apply (ceci, arguments);
retourne this.length;
}
}
8.Splice Dans le cas d'un paramètre, le deuxième paramètre par défaut de IE8 et les versions suivantes est 0, tandis que les autres navigateurs sont de longueur de tableau.
La copie de code est la suivante:
if ([1,2,3] .splice (1) .length == 0) // ie8 et les versions suivantes seront égales à 0, et d'autres versions seront égales à 3, entrez si
{
var _splice = array.prototype.splice;
Array.prototype.splice = fonction (a) {
if (arguments.length == 1) // s'il n'y a qu'un seul paramètre
{
return _splice.call (this, a, this.length);
}autre{
return _splice.apply (ceci, arguments);
}
}
}
Cette méthode modifiera les options du tableau, donc push, pop, shift et désastre le tableau (ces méthodes modifieront également les options du tableau) appellera cette méthode pour l'implémenter.
Voici un endroit pour noter:
La copie de code est la suivante:
var color = nouveau tableau («rouge», «bleu», «jaune», «noir»);
var color2 = colore.splice (2,0, «marron», «rose»);
alerte (couleur); // rouge, bleu, marron, rose, jaune, noir, sur l'option jaune, démarrez l'opération, si la suppression est de 0, l'option ajoutée est insérée avant jaune. Souviens-toi.
Ici, veuillez vérifier la différence entre l'épissage et la tranche, la valeur de retour et son impact sur le tableau d'origine.
Ce qui précède est une version simplifiée du contenu de cette section. Bien qu'il soit rationalisé, les points clés sont tous. J'espère que cela sera utile à tout le monde lors de la lecture de cette section.