我需要你帮助创建一个能够压缩空组并将其移回给它的父亲的功能。 这些组是对象,而且他们是一个阵列。
用户被创建为类构造函数
中的对象user.js的
class User {
constructor(name, password, age) {
this.name = name;
this.password = password;
this.age = age;
}
}
users.js
class users {
constructor() {
this.users = {}
}
并在班级承包商中附属于团体。
group.js
class Group {
constructor(name, parent) {
this.name = name;
this.parent = parent || null;
this.children = [];
this.users = {}
}
groups.js
class groups {
constructor() {
this.root = new Group('root');
}
因此,如果该组的名称为bar且用户名为foo,则您收到的日志类似于:
Group {name:"root",parent:,children:,users:) chidren: "bar" user: USER
{name: "foo",password: "1010",age: "1010"}.
修改 我想我想做的方式是: 获取组名,找到它的父亲,检查父亲是否只有一个孩子,重置父亲的数组(长度= 0)
只有拥有一个孩子才能继续。 检查小组是否有孩子,如果有小孩,并告诉他们小组是新父亲。 把孩子推到父母的阵列。
答案 0 :(得分:1)
没有测试,但它应该完成工作:
const loopTree = (tree) => {
if (tree.parent) { //if the element has no parent, no use checking if I should move to parent
let usersToUp = tree.children.length > 0 ? {} : tree.users; //if children has no items, then the users object is the users object, otherwise an empty object
Object.assign(tree.parent.users, usersToUp) //assign the users to the parent... No conditional here, if usersToUp is an empty object then this will do nothing.
if (usersToUp.keys().length > 0) { //and here I remove users from current tree, if there were users to move
tree.users = {};
}
}
tree.children.forEach(loopTree); //now I just call the same function for other children of the tree
}
从顶部组开始,如果它有父级,请检查要移动的用户,然后移动它们。然后继续处理较低级别的元素。
由于它作用于对象引用,因此它不需要任何return语句。