打破TypeScript对象属性的循环

San*_*dro 3 loops typescript

我想用TypeScript迭代对象属性.但是我想在找到特定对象后立即停止.

就像是:

function hasElement() {
    let obj = {
        a: 'a',
        b: 'b',
        c: 'c'
    }
    let found = false;
    for (let i = 0; i < Object.keys(this.obj).length && !found; i++) {
        let prop = obj[i];
        found = prop === 'a';
    }
    return found;
}
console.log(hasElement());
Run Code Online (Sandbox Code Playgroud)

但是obj[i]不行,因为密钥不是数字.当然我可以使用break或跳转到标签,但在我看来它很难看,因为我宁愿首先指定循环条件.

Mad*_*iha 5

这不是你用TypeScript迭代对象的方式.您正在寻找for..of:

for (const key of Object.keys(obj)) {
  if (obj[key] === 'a') { return true; }
}
return false;
Run Code Online (Sandbox Code Playgroud)

您还可以使用.find():

const matchingKey = Object.keys(obj).find(key => obj[key] === 'a');
return Boolean(matchingKey); // convert to boolean.
Run Code Online (Sandbox Code Playgroud)