是否有可能摆脱for..in
循环?
const obj = { a: 1, b: 2, c: 3, d: 4 }
for (const prop in obj) {
let flag = false
if (flag === true) break
if (obj[prop] === 2) { flag = true } else { console.log(obj[prop]) }
}
或者像常规的for
循环那样不可能吗?
答案 0 :(得分:2)
使用break
代替变量
const obj = {
a: 1,
b: 2,
c: 3,
d: 4
}
for (const prop in obj) {
if (obj[prop] === 2) {
break;
} else {
console.log(obj[prop])
}
}
答案 1 :(得分:1)
有可能,但是您需要在循环之外而不是在循环中的每次迭代上声明flag
一次:
const obj = {
a: 1,
b: 2,
c: 3,
d: 4
};
let flag = false
for (const prop in obj) {
if (flag === true) break;
if (obj[prop] === 2) {
flag = true
} else {
console.log(obj[prop])
};
}
通常,如果您想这样短路,则使用.find
或.some
更合适,例如:
const obj = {
a: 1,
b: 2,
c: 3,
d: 4
};
const foundKey = Object.keys(obj).find(key => obj[key] === 2);
console.log(foundKey);