Мне нужно создать дерево.Дерево JavaScript с узлами, содержащими массивы
Каждый узел имеет два двумерных массива, «statusTable» и «moveTable».
Каждый ребенок должен наследовать его статус статуса родителя (его копию).
Каждый узел должен иметь 10 детей.
Создание дерева должно прекратиться, когда оно достигнет «maxDepth».
Когда я использую приведенный ниже код, я понимаю, что все узлы указывают на один и тот же statusTable.
Любая помощь пожалуйста?
function NODE(p, statTable, movTable, depth)
{
this.par = p;
this.statusTable = statTable.slice();
this.moveTable = movTable.slice();
this.depth = depth;
}
function createChildren(parentNode)
{
var childNode, m;
if (parentNode.depth == maxDepth) return;
for (m = 0; m < 10; m++) {
moveTable = [];
mainTable = parentNode.statusTable.slice();
childNode = new NODE(parentNode, mainTable, moveTable, parentNode.depth + 1);
createChildren(childNode);
}
}
Вы уверены, что все узлы указывают на то же statusTable? Каждый statusTable должен быть другим экземпляром массива с теми же ссылками на дочерние элементы. – Naor
@Naor Если я вношу изменения в statusTable для дочернего элемента, это также влияет на statusTable его родителя. Вот почему я считаю, что все они ссылаются на один и тот же массив. – ion
'if (parentNode.depth = maxDepth)' должно быть 'if (parentNode.depth === maxDepth)'. –