Формирование объекта Trie в Javascript

Итак, я пытаюсь создать последовательность, которая связывает слова в предложении, а не префиксы слов. Мне удалось сделать это уже в Python, следующим образом:

#statement trie

class strie (object):

def __init__(self):
    self.trie = {}
def __repr__(self):
    return str(self.trie)
def __str__(self):
    return str(self.trie)
def statement(self, phrase):
    words = phrase.split()
    current = self.trie
    while len(words) > 0:
        word = words.pop(0)
        if word in current.keys():
            current = current[word]
        else:
            current[word] = {}
            current = current[word]

И я бы получил результат, протестировав:

       r
=> {'The': {'apple': {'is': {'red': {}, 'blue': {'or': {'yellow': {}}}}}}}

Однако, когда я реализую это почти одинаково с javascript, происходит нечто странное. Вот моя реализация для этого в JavaScript:

    //constructs a trie formed form a single sentence as an object.
function single_trie(phrase) {
    phrase = phrase.toLowerCase();
    var trie = {};
    var words = phrase.split(" ");
    var current = trie;
    while (words.length > 0) {
        var word = words.shift();
        if(word in current) current = current[word];
        else {
            current[word] = {};
            current = current[word];
        }
    }
    return trie;
}

И я получаю этот действительно странный результат:

    var strie = single_trie("the apple is red and blue");
console.log(strie);

{ the: { apple: { is: [Object] } } }

Что является причиной этого с моей реализацией JavaScript? Почему это показывает [Объект]? Как я могу заставить его работать как моя реализация Python?

0 ответов

Другие вопросы по тегам