web-dev-qa-db-fra.com

Quel est le point de slice (0) ici?

J'étudiais la source jQuery quand j'ai trouvé ceci (v1.5 ligne 2295):

namespace = new RegExp("(^|\\.)" +
  jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");

Ma question est la suivante: pourquoi utiliser slice(0) ici?

57
mVChr

sort() modifie le tableau sur lequel il a été appelé - et il n’est pas très agréable d’entraîner la mutation de choses sur lesquelles un autre code pourrait s’appuyer.

slice() renvoie toujours un nouveau tableau - le tableau renvoyé par slice(0) est identique à l'entrée, ce qui signifie fondamentalement qu'il s'agit d'un moyen peu coûteux de dupliquer un tableau.

95
Anon.

arr.slice(0) crée une copie du tableau d'origine en prenant une tranche de l'élément d'indice 0 jusqu'au dernier élément.

Il est également utilisé pour convertir des objets de type tableau en tableaux. Par exemple, un DOM NodeList (renvoyé par plusieurs méthodes DOM comme getElementsByTagName ) n'est pas un tableau, mais un objet de type tableau avec un champ length et pouvant être indexé en JavaScript. Pour le convertir en tableau, on utilise souvent:

var anchorArray = [].slice.call(document.getElementsByTagName('a'), 0)
28
ide

slice (0) crée un nouveau tableau identique au tableau d'origine. Plusieurs fois, vous souhaitez conserver votre tableau d'origine et en créer un nouveau. 

Si vous utilisez slice (1), un tableau différent sera créé à partir de la position d'index 1. 

Des choses similaires sont également valables pour les chaînes. 

3
Abhi

slice(0) vous permet de renvoyer un tableau du tableau existant que vous référencez, dans ce cas des espaces de noms.

0
TNC

En plus de ce que @Anon a dit:

La méthode slice() sélectionne les éléments en commençant par l'argument de début donné et se termine par l'argument de fin donné, sans l'inclure.

Exemple 1:

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3);

Le résultat des agrumes sera:

Orange,Lemon

Exemple2:

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(-3, -1);

Le résultat des agrumes sera:

Lemon,Apple

De plus amples informations peuvent être trouvées ici .

0
Luis Teijon