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

时间:2015-04-06 04:28:56

标签: javascript if-statement

我想遍历对象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;
  }
}

2 个答案:

答案 0 :(得分:5)

您希望在这些条件和操作中使用实际的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,那么你必须要小心你正在执行什么以及它是如何构建的。

答案 1 :(得分:1)

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

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

然而我确实第二次@Brad's comments试图避免eval并尽可能使用实际代码。