如何基于含同名属性的两个JS对象拼接生成指定语句?
如何关联独立的员工与公司对象并生成目标语句?
你现在遇到的问题核心很明确:手里的employees和companies对象都用name属性存储名称,但两者完全独立,没有任何能绑定员工与对应公司的关联字段,所以没法直接拼接出想要的语句。解决这个问题的关键是先建立员工与公司的关联映射,下面给你两种实用的实现方式:
方式一:创建独立的关联映射表(不修改原有对象)
这是最符合你“无法修改原有对象”要求的方法,我们单独做一个映射表来指定每个员工对应的公司:
const employees = { employee1: {name: "Susana", age: 54}, employee2: {name: "Mariano", age: 55} }; const companies = { company1: {name: "General Electric"}, company2: {name: "Apple Computers"} }; // 建立员工ID与公司ID的关联映射 const employeeToCompany = { employee1: "company1", // 指定Susana对应General Electric employee2: "company2" // 指定Mariano对应Apple Computers }; // 遍历员工,拼接生成目标语句 Object.entries(employees).forEach(([empKey, employee]) => { const companyKey = employeeToCompany[empKey]; const company = companies[companyKey]; console.log(`${employee.name} works at ${company.name}`); });
运行这段代码后,控制台会输出:
Susana works at General Electric
Mariano works at Apple Computers
方式二:给员工对象补充关联字段(如果后续允许修改的话)
如果之后有机会调整员工对象的结构,也可以直接给每个员工添加一个companyId字段来绑定对应公司,这样代码会更简洁:
// 补充companyId字段后的员工对象(仅作示例,你说不能修改原有对象的话可忽略) const employees = { employee1: {name: "Susana", age: 54, companyId: "company1"}, employee2: {name: "Mariano", age: 55, companyId: "company2"} }; const companies = { company1: {name: "General Electric"}, company2: {name: "Apple Computers"} }; // 直接通过companyId匹配公司 Object.values(employees).forEach(employee => { const company = companies[employee.companyId]; console.log(`${employee.name} works at ${company.name}`); });
简单来说,核心就是先给员工和公司建立“绑定关系”,有了这个关系后,不管是通过独立映射表还是对象自身的字段,都能轻松获取到双方的name属性来拼接你想要的语句啦~
内容的提问来源于stack exchange,提问作者Alfredo Rafael Habersham Pabon
相关产品推荐
相关产品推荐

