首页 > 解决方案 > 将属性名称与其在数组中的值匹配;

问题描述

我试图输出一个字符串,如“团队 1 有以下员工:Joe、Mark 和 John。团队 2 有以下员工:Lauren、Conrad 和 Sumeet。” 我有以下对象:

 const teamInfo = {
    teams: {
        team1: ['Joe', 'Mark', 'John'], 
        team2: ['Lauren', 'Conrad', 'Batman'],
    
    },
} 

我尝试了以下方法,它产生的东西看起来有点像我想要的,但由于输出包含对象,我无法自定义列出名称的输出部分。例如,我不能说“团队 1 包括乔、马克和约翰。团队 2 包括劳伦、康拉德和蝙蝠侠”。

let infoString = "";
for (const [team, employees] of Object.entries(teamInfo.teams)) {
    infoString += ` ${team} employees include: ${employees}. `;
}
console.log(infoString)

如何在不使用任何快速或更中级/高级方法的情况下完成此操作?我基本上希望能够使用循环、Object.entries/keys/values 而不是快速快捷方式来使用基本 JS 来做到这一点。

我还尝试了各种循环遍历员工数组并在其中嵌套另一个循环的排列,但这有明显的问题。另一次尝试接近了,但它输出了三遍,而不是一次全部输出。

不只是寻找解决方案;但一些建议。

谢谢你

标签: javascriptarraysloopsobject

解决方案


for循环中,您可以创建没有最后一项的员工副本,用逗号连接它,然后连接'and'和最后一个员工姓名:

const teamInfo = {
    teams: {
        team1: ['Joe', 'Mark', 'John'], 
        team2: ['Lauren', 'Conrad', 'Batman'],
    
    },
} 

let infoString = "";
for (const [team, employees] of Object.entries(teamInfo.teams)) {
    infoString += ` ${team} employees include: ${employees.slice(0, -1).join(', ')} and ${employees[employees.length - 1]}\n`;
}
console.log(infoString)


推荐阅读