我想在同一.js文件中将用户与其父母/子女/配偶链接
因此,如何在对象内“链接”。让我们说:
const users = {
bradpitt: {
name: "Brad",
lastname: "Pitt",
spouses: [{
angelinajolie
}]
},
angelinajolie: {
name: "Angelina",
lastname: "Jolie",
parents: [{
jonvoight
}]
}
jonvoight: {
name: "Jon"
}
}
所以我可以这样使用它:
getParents() {
for (const u of users) {
return u.parents.name
}
}
结果:乔恩
您的方法正确,但缺少一些关键功能:
看看这个片段中的评论!
主要的问题是,你的对象分配的事实
angelinajolie
,以bradpitt
对象之前angelinejolie
被定义。一种更简单,更安全的方法是使用id's
名称,因为名称不是唯一的。我在示例中使用了它:
同样,对于属性,您可以使用for...in
循环,并且需要检查该属性是否可用。如果u.parents
是undefined
,它将引发错误。
我已经将唯一名称更改为使用字符串id
和六位数字构建的ID号。id00000
。在用户对象中,我只是指的是没有前导零和id的用户。要在getParents
我使用的函数中重建它String.prototype.padStart
。它将零填充到字符串的左侧,直到到达6个字符为止。
"id"+(p.toString().padStart(6, '0'));
const users = {
id000001 : {
name: "Brad",
lastname: "Pitt",
spouses: [
1
]
},
id000002 : {
name: "Angelina",
lastname: "Jolie",
parents: [
3
]
}, //fixed a missing comma here
id000003: {
name: "Jon"
}
}
function getParents() {
//define a return object
//return parents per set of users
const parents = {};
//iterate over every user
for (key in users) {
const u = users[key];
//if the user has parents go on
if (u.parents)
{
//save the parents to parent object with the user as key:
//use map to iterate over every parent and return the name of the parent
parents[key] = u.parents.map((p) => users["id"+(p.toString().padStart(6, '0'))].name);
}
};
//return the parents object
return parents;
}
//log to console to show results:
console.log(getParents());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句