【发布时间】:2018-08-07 06:27:32
【问题描述】:
如果我错过了一些非常简单的东西,非常抱歉。
我一直在尝试写一些东西,它将返回一个属性编号、属性名称和对象的所有属性值的列表,格式如下:
"n property - property value"
我确信我已经以一种完全过于复杂的方式解决了这个问题,但这里是代码:
var person = {
names: ["A", "B", "C"],
dob: "D",
age: 21,
job: "E",
car: ["F", 2, "G", "H", "I", "J", "K"],
phone: "L",
instrument: "M",
parents: ["N", "O", "P"],
born: "Q",
lives: "R",
university: "S",
};
function lister (name) {
for (i=0; i<(Object.keys(name).length); i++) {
if (((Object.values(name)[i].constructor) == Array) === true) {
for (x=0; x<(Object.keys(Object.values(name)[i]).length); x++) {
console.log(i + " " + Object.keys(name)[i] + " - " + Object.values(Object.values(name)[i])[x]);
}
}else{
console.log(i + " " + Object.keys(name)[i] + " - " + Object.values(name)[i]);
}
}
};
console.log(lister(person));
for (i=0; i<(Object.keys(person).length); i++) {
if (((Object.values(person)[i].constructor) == Array) === true) {
for (x=0; x<(Object.keys(Object.values(person)[i]).length); x++) {
console.log(i + " " + Object.keys(person)[i] + " - " + Object.values(Object.values(person)[i])[x]);
}
}else{
console.log(i + " " + Object.keys(person)[i] + " - " + Object.values(person)[i]);
}
};
问题是,当我在 function lister (name) 中调用 for 循环时,它似乎额外运行了一次,给了我:
"0 names - A"
"0 names - B"
"0 names - C"
"1 dob - D"
...
"9 lives - R"
"10 university - S"
undefined
但是,当从函数中取出 for 循环时(正如我在底部所做的那样),它会正常返回,而不是返回额外的“未定义”。我做错了什么?
【问题讨论】:
-
(Object.values(name)[i].constructor) == Array) === truesrsly?
标签: javascript list function for-loop undefined