Méthodes 1.indexOf et lastIndexOf :
Étant donné qu'IE7 signalera une erreur lors de l'utilisation de indexOf sur un objet tableau, il doit être réécrit pour des raisons de compatibilité.
Array.prototype.lastIndexOf(item,index){
var n = this.length,i = (index==null||index>n-1)?n-1:index;
si (je < 0) je = n je;
pour(;i>=0;i--)
if(this[i] === item) //Jugement congruent, indexOf, lastIndexOf
retourne i;
retourner -1 ;
>
Méthode 2.shuffle : mélangez le tableau.
fonction shuffle (cible) {
var i = target.length, j ,temp;
for(;i>0;j=parseInt(Math.random() * i), x = cible[--i],target[i] = cible[j],target[j]=x){}
//Supposons que length=10, puis Math.random()*10->[0,10), après parseInt, [0,9], sélectionnez-en un au hasard à échanger avec le dernier élément du tableau. La deuxième fois dans la boucle, [0,8] est échangé avec l'avant-dernier élément du tableau.
objectif de retour ;
>
3. Aplatissement des tableaux : aplatir, renvoyant un tableau unidimensionnel
fonction aplatir(arr){
var résultat = [];
arr.forEach(fonction(élément){
if(Array.isArray(item)) result.concat(flatten(item));
autre result.push(item);
});
renvoyer le résultat ;
>
4.méthode unique : opération de déduplication sur baie
Les enquêteurs aiment le plus poser des questions sur cette méthode, car elle comporte de nombreuses méthodes de mise en œuvre, la plus courante étant deux boucles for. La chose la plus connue est d'utiliser un objet a, puis un tableau de boucles for arr. Chaque fois que si (a[arr[i]]) existe, s'il n'existe pas, il sera poussé vers le résultat de votre tableau nouvellement défini. . L'existence est prouvée et répétée, il n'est donc pas nécessaire de la pousser au résultat. Dans ce schéma, "123" et 123 seront considérés comme identiques. En fait, l'un est une chaîne et l'autre un nombre, ils ne doivent donc pas être considérés comme identiques.
La méthode suivante apparaît donc : [1,"1","1"]
if ((typeof obj[array[i]]) != (typeof array[i]) || obj[array[i]] != array[i]) {
a.push(array[i]);
obj[array[i]] = tableau[i];
>
//Déterminez d'abord si les types sont identiques. S'ils sont identiques, déterminez si leurs valeurs sont égales. S'ils ne sont pas égaux, enregistrez-les. S'ils sont égaux, cela prouve que la valeur existe déjà. avant.
Si les types ne sont pas les mêmes, il y a deux situations,
Dans le premier cas, obj a déjà stocké ces données auparavant, par exemple : obj[123] = 123, maintenant array[i] = "123", à ce moment, typeof obj[array[i]]) est un nombre et typeof array[i] est une chaîne, elle est donc stockée dans le tableau.
Le deuxième cas est que obj n'a pas enregistré ces données, par exemple : array[i] = "123", obj["123"] = undefind, alors typeof obj[array[i]]) est typeof undefined = indéfini, différent du type de tableau[i], stocké dans le tableau.
Cette méthode peut résoudre le cas où les chaînes et les nombres sont identiques, mais elle ne peut pas résoudre le cas où les objets sont identiques. Par exemple : a = {1:2}, b ={2:1};
La première fois dans la boucle, typeof obj[a] = undefined, typeof a = Object. Stocker obj[a] = a. En fait, c'est obj[Object] = a;
.
Dans la deuxième boucle, typeof obj[b] est égal à typeof obj[Object], qui est en fait typeof a = object, typeof b = object Par conséquent, il entre obj[array[i]] != array[. i]|, c'est-à-dire obj[b]->obj[Object]->a ! = b, alors déposez
obj[b] = b; c'est-à-dire obj[Object] = b; couvrant l'obj[Object] = a;
Dans ce cas, tous les objets n'auront que la dernière valeur d'objet stockée.
Lorsque je pense aux objets, j'utilise cette approche :
pour(var je = 0; je < temp.length; je ){
pour(var j = i 1; j < temp.length; j ){
Si(temp[i] === temp[j]){
temp.splice(j, 1);
j--;
}
}
>
température de retour ;
5. Tri par tableau : méthode de tri, si vous souhaitez trier des objets, vous pouvez écrire votre propre compare(a,b){if(a.age>b.age) return 1;else return -1;}, Un .sort(comparer).
6.min renvoie la valeur minimale du tableau : return Math.min.apply(0,array);
7.unshift ne renvoie pas la longueur du tableau sous ie6 et 7.
if([].unshift(1)!==1) //Ajoute un élément de l'avant au tableau vide. Les autres navigateurs renverront 1, mais IE6 et 7 ne renverront pas la longueur du tableau. Ensuite, exécutez l'instruction if
{
var _unshift = Array.prototype.unshift; //Détournement de fonction.
Array.prototype.unshift = function(){
_unshift.apply(this,arguments);
Renvoie this.length;
>
>
8. Lorsque splice prend un paramètre, les versions IE8 et inférieures mettent par défaut le deuxième paramètre à 0, tandis que les autres navigateurs utilisent la longueur du tableau.
if([1,2,3].splice(1).length == 0) //Les versions IE8 et inférieures seront égales à 0, les autres versions seront égales à 3, saisissez if
{
var _splice = Array.prototype.splice;
Array.prototype.splice = fonction(a){
if(arguments.length == 1) //S'il n'y a qu'un seul paramètre
{
Retourner _splice.call(this,a,this.length);
}autre{
Renvoie _splice.apply(this,arguments);
}
>
>
Cette méthode modifiera les options du tableau, donc les push, pop, shift et unshift du tableau (ces méthodes modifieront également les options du tableau) appelleront tous cette méthode pour l'implémenter.
Il y a quelque chose à noter ici :
var color = new Array('rouge','bleu','jaune','noir');
var color2 = color.splice(2,0,'marron','rose');
alert(color); // rouge, bleu, marron, rose, jaune, noir, démarre l'opération sur l'option jaune Si la suppression est 0, l'option ajoutée est insérée avant le jaune. Souviens-toi.
Ici, veuillez jeter un œil à la différence entre splice et slice, la valeur de retour et l'impact sur le tableau d'origine.
Ce qui précède est une version condensée du contenu de cette section. Bien qu'il soit concis, les points clés sont toujours là. J'espère que cela sera utile à tout le monde lors de la lecture de cette section
.