如何轻松地在接口属性上进行迭代

时间:2019-02-13 07:02:58

标签: typescript

是否有可能以一种优雅的方式遍历接口属性并根据某种逻辑返回结果。我有一个接口,我想读取属性值以查看值是否为空,然后根据该值确定最终结果。

接口是:

 errors: {
    confirmPassword: "",
    email: "",
    firstname: "",
    lastname: "",
    password: ""
  }

现在,我要遍历这些属性,如果它们中的任何一个都具有某些值,那么如果它们全部为空,我将返回true或false。

3 个答案:

答案 0 :(得分:1)

您可以使用Object.valuesArray.every

let errors =  {
    confirmPassword: "",
    email: "",
    firstname: "",
    lastname: "",
    password: ""
};

let result = Object.values(errors).every(v => v == "");
console.log(result);

或者您可以简单地使用for循环。

let errors = {
  confirmPassword: "",
  email: "",
  firstname: "",
  lastname: "",
  password: ""
};

let result = true;
for (let key in errors) {
  if(errors[key] != "") {
    result = false;
    break;
  }
}
console.log(result);

答案 1 :(得分:0)

您还可以使用Array方法.some()

let errors= {
confirmPassword: "",
email: "",
firstname: "",
lastname: "",
password: ""
  };
let allNull = Object.keys(errors).some(function(k) {
    return errors[k] === "";
});
console.log(allNull);

答案 2 :(得分:0)

否,您不能在接口属性上进行迭代,因为该接口在运行时中不存在。

您可以使用obj.hasOwnProperty(prop)遍历对象属性

var buz = {
    fog: 'stack'
};

for (var name in buz) {
    if (buz.hasOwnProperty(name)) {
        alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
    }
    else {
        alert(name); // toString or something else
    }
}