Формирование объекта 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?