2017-05-18 13 views
0

Im convertir des tableaux en listes chaînées et en listes chaînées en tableaux. Mon problème est que j'obtiens le journal de console incorrect de la liste liée que je fais, mais le journal de console correct du tableau créé à partir de cette liste liée.Le programme génère uniquement une liste chaînée partielle au lieu de la liste chaînée entière

Dans le code ci-dessous, j'obtiens la sortie attendue de [1, 2, 3, 4, 5] à partir de listToArray(). Mais w/arrayToList(), ma sortie est {valeur: 1, reste: {valeur: 2, reste: {valeur: 3, reste: [Objet]}}}. Qu'est-il arrivé aux valeurs 4 et 5? Ils devraient être là parce que dans ce cas, listToArray() utilise une liste identique créée à partir de arrayToList().

var array = [1, 2, 3, 4, 5]; 

var arrayToList = function(arr) { 
    var list = {}; 
    var head = list; 

    for (i = 0; i < arr.length; i += 1) { 
    list.value = arr[i]; 
    list.rest = {}; 

    if (i == arr.length - 1) { 
     list = null; 
    } else { 
     list = list.rest; 
    } 
    } 

    return head; 
} 

var listToArray = function(list) { 
    var arr = []; 
    var index = 0; 

    while(list.rest != null) { 
    arr[index] = list.value; 
    list = list.rest; 
    index += 1; 
    } 

    return arr; 
} 

console.log(listToArray(arrayToList(array))); 
console.log(arrayToList(array)); 

Répondre

3

Courez-vous dans un navigateur ou Node.js? Différents environnements ont un comportement de console différent. Dans le noeud lorsque vous faites console.log(someObject), il va appeler util.inspect pour convertir votre objet en une chaîne. La profondeur de récursivité par défaut de util.inspect est 2 et après cela, il affichera simplement [Object].

Vous pouvez

console.log(util.inspect({depth: null})); 
+0

Vous êtes incroyable. Merci pour l'aide! Affaire classée – nsun