如何在未知内部对象名称时指向并显示嵌套对象的属性值
如何在未知内部对象名称时指向并显示嵌套对象的属性值
嘿,我来帮你搞定这个问题!你现在的思路其实已经对了一半——已经能准确判断出哪个属性是嵌套对象了,接下来只需要对这个内部对象再做一次遍历,就能拿到它的所有属性值啦。
你可以把当前遍历到的内部对象(也就是person[x])存到一个变量里,不管它原来的键名是cars还是别的什么,都能直接通过这个变量访问它的属性。然后用另一个for...in循环遍历这个内部对象,收集所有值后再输出就行。
修改后的代码如下:
const person = { name: "Jack", family: "Miller", age: 27, cars: { car1: "Bens", car2: "Lexus" } } for (let x in person) { if (typeof person[x] === "object") { // 把当前的内部对象存下来,不用关心它原来的键名 const innerObj = person[x]; // 收集内部对象的所有属性值 const innerValues = []; for (let key in innerObj) { innerValues.push(innerObj[key]); } // 用逗号连接值并输出 document.write(innerValues.join(", ") + "<br>"); } else { document.write("_<br>"); } }
代码说明:
- 当
typeof person[x] === "object"时,person[x]就是你要找的嵌套对象(这里是cars),我们用innerObj变量接收它,这样就不用硬写person.cars这种固定键名啦。 - 第二个
for...in循环遍历innerObj的所有键,把对应的值放进innerValues数组里。 - 最后用
join(", ")把数组里的值拼成你想要的格式,再输出就行。
运行这段代码后,就能得到你预期的输出:
_ _ _ Bens, Lexus
小提示:如果你的对象里可能出现null值,记得在判断里加上&& person[x] !== null,因为typeof null也会返回object,避免把null当成对象处理哦~
备注:内容来源于stack exchange,提问作者sourcechange
相关产品推荐
相关产品推荐

