arr = ["billy", "bobby", {"hank": "true"}]
arr.forEach((name, index) => {
if (typeof(name) == "object") {
??????
} else {
console.log(name)
}
})
给定数组arr
,我可以使用for进行遍历吗,以控制台记录每个名称(如果是对象,则为键)?我以为我可以在其中扔一个条件来捕获对象,但是从那里我不确定如何注销密钥。
答案 0 :(得分:1)
您可以遍历数组项,并检查该对象是否存在,如果是该对象,则可以使用获取属性的循环“ for-in”循环对其每个属性进行迭代,然后获取的值。属性
arr = ["billy", "bobby", {"hank": "true"}]
arr.forEach((name, index) => {
if (typeof(name) == "object") {
for(var objProp in name){
console.log(objProp, name[objProp])
}
} else {
console.log(name)
}
})
答案 1 :(得分:1)
如果对象仅包含一个属性,则可以采用Object.keys
的第一项。有关更多信息,您需要迭代密钥。
var array = ["billy", "bobby", { hank: "true" }];
array.forEach((name, index) => {
if (typeof(name) == "object") {
console.log(Object.keys(name)[0]);
} else {
console.log(name);
}
});
答案 2 :(得分:1)
使用Object.keys()
函数获取键的名称:
const arr = ["billy", "bobby", {"hank": "true"}]
arr.forEach((name, index) => {
if (typeof(name) == "object") {
Object.keys(name).forEach(n => console.log(n)); // log all names in the object
} else {
console.log(name)
}
})
如果您只想注销那些名称,其值为"true"
,请为其添加过滤器:
const arr = ["billy", "bobby", {"hank": "true", "connor": "false"}]
arr.forEach((name, index) => {
if (typeof(name) == "object") {
Object.keys(name)
.filter(n => name[n] === "true")
.forEach(n => console.log(n)); // log all names in the object which's value is "true"
} else {
console.log(name)
}
})
答案 3 :(得分:0)
您可以使用Object.keys()
获取对象中的所有键,然后在其上进行映射,但是要检查对象,还应检查其是否不为null,否则将导致潜在的错误 >
const arr = ["billy", "bobby", {"hank": "true"}, null]
arr.forEach((name, index) => {
if(!name) {
return;
}
if (typeof name == "object") {
Object.keys(name).forEach(n => console.log(n)); // log all names in the object
} else {
console.log(name)
}
})
答案 4 :(得分:0)
这是一种使用typeof
获取类型并处理Arrays
的解决方案,从某种意义上来说就是要获取它们的第一个元素。
他们trick
使用Object.key
来获取对象的键。您可以阅读more about it here。
arr = ["billy", "bobby", {"hank": "true"}, [1]]
// With array support - print just first element
arr.forEach(name => console.log(typeof name === 'object' ? Array.isArray(name) ? name[0] : Object.keys(name)[0]: name ))
自您在控制台中打印以来的另一种解决方案是利用JSON.stringify
并以此方式生成一组漂亮的数组/对象:
arr = ["billy", "bobby", {"hank": "true"}, [1]]
arr.forEach(name => console.log(typeof name === 'object' ? Array.isArray(name) ? JSON.stringify(name) : JSON.stringify(name) : name))