我如何编程许多不同的条件和操作

How do I program many different conditions and actions

本文关键字:条件 操作 许多不 何编程 编程      更新时间:2023-09-26

我想循环遍历对象address中的级别1属性,并在循环中使用if语句测试特定于该属性的各种条件和操作。因此,我添加了级别2的conditionaction属性,试图降低if语句的复杂性。下面的代码代表了我正在尝试做但不起作用的事情。不知道如何做到这一点。

var address = {
  first: {
    value: "Joe",
    condition: "address[key].value.length === 0",
    action: "console.log(key + ' Not street1:' + address[key].value.length)"
  },
  last: {
    value: "Dirt",
    condition: "address[key].value.length === 0",
    action: "console.log(key + ' Not street1:' + address[key].value.length)"
  },
  street1: {
    value: "123 Blah Street",
    condition: "key === 'street1' && address[key].value.length === 0",
    action: "console.log(key + ' This is street1')"
  },
};
for (var key in address) {
  var condition = address[key].condition;
  var action = address[key].action;
  if (condition) {
    return action;
  }
}

您将希望在这些条件和操作中使用实际的JavaScript

  first: {
    value: "Joe",
    condition: function () { return address[key].value.length === 0 },
    action: function () { console.log(key + ' Not street1:' + address[key].value.length) }
  }

除非你真的需要eval(),否则我不推荐它。你的示例代码不需要它……但谁知道这里的实际应用程序是什么呢?如果你确实需要eval,你必须小心执行什么以及如何构建它。

您必须使用eval:评估条件和操作

for (var key in address) {
    var condition = address[key].condition;
    var action = address[key].action;
    if (eval(condition)) {
        eval(action);
    }
}

然而,我支持@Brad关于尽量避免eval并尽可能使用实际代码的评论。