javascript - 如何在对象/数组中链接?
问题描述
我想在同一个 .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
. 在 users 对象中,我只是指没有前导零和 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());
推荐阅读
- plugins - 现在是 2019 年。如何使用独立的 Java 应用程序安装 Windows?
- java - 未发现 MVEL 脚本引擎
- android - SQLite 查询错误,onItemClick 使应用程序崩溃
- java - java.util.LinkedHashMap 不能转换为 java.lang.String
- amazon-web-services - 无法通过快照复制加密未加密的 RDS 数据库
- bash - 如何递归地找到数字的总和
- graphics - 使用三角形的相似性,它如何实现透视投影
- r - geom_jitter 的高度/宽度参数与对数刻度交互
- python - 在 Docker Image 中运行脚本时出现“ModuleNotFoundError”问题
- jwt - 如何从预览中放入这个 accesss_token 的数组?