是否可以退出for..in循环?

时间:2020-04-29 08:29:33

标签: javascript

是否有可能摆脱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循环那样不可能吗?

2 个答案:

答案 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);