2017-09-07 5 views

Répondre

0

Array#reverse œuvres en place et ne crée pas un nouveau tableau. La ligne

var reversed = a.reverse(); 

renverse a et définit également reversed pour référencer le même tableau.

Dans cet exemple, vous pouvez voir que l'ajout d'un élément à reversed affecte également a parce qu'ils font référence au même tableau:

var a = ['one', 'two', 'three']; 
 
var reversed = a.reverse(); 
 

 
reversed.push(1000); // add something to reversed 
 

 
console.log(a);  // ['three', 'two', 'one', 1000] 
 
console.log(reversed); // ['three', 'two', 'one', 1000]

Pour créer un nouveau tableau utiliser Array#slice sur l'original, puis inverser le tableau:

var a = ['one', 'two', 'three']; 
 
var reversed = a.slice().reverse(); 
 

 
console.log(a);  // ['one', 'two', 'three'] 
 
console.log(reversed); // ['three', 'two', 'one']

+0

Comment peut-on aller sur la définition d'une variable la chaîne inversée tout en conservant l'original, afin qu'ils puissent être comparés, et consigner la sortie désirée comme commentée? –

+0

@BrodyMacfarlane - découper et inverser. J'ai ajouté un exemple. –

+0

Salut merci beaucoup. Lame erreur de ma part. J'accepterai la réponse dans seulement quelques-uns! –

0

La fonction inverse mute le tableau en cours. Après avoir déclaré reversed être a.reverse(), le tableau a sera également muté. Ainsi, vous imprimera ['three', 'two', 'one'] pour console.log(a) et console.log(reversed)

Qu'est-ce que vous voulez faire est de faire un clone d'un:

var a = ['one', 'two', 'three']; var reversed = a.slice().reverse();

console.log(a); // ['one', 'two', 'three'] console.log(reversed); // ['three', 'two', 'one']