记录循环遍历数组生成if语句并且执行返回一个所需要的状态

有个需求需要定义一个返回状态的方法,这个方法的逻辑就是传入一个数值,根据这个数值所在范围返回不同的状态,问题就出在方法中的各个范围都是动态的。最后就是需要根据一个数组对象循环遍历得到一个if条件的字符串然后执行字符串返回状态。

let "ColorRanges" = [
    {"start": "0", "end": "50", "sinclusion": "T", "einclusion": "T", "state": "normal" },
    { "start": "50", "end": "80", "sinclusion": "F", "einclusion": "T", "state": "warning" },
    { "start": "80", "end": "100", "sinclusion": "F", "einclusion": "T", "state": "error" },
]
function getState (val){
    let nval = Number(val)
    let condition = ''
    let state = 'normal'
    ColorRanges.forEach((item,index,arrary)=>{
        if(item.sinclusion == 'T' && item.einclusion == 'T'){
            condition += `if(nval>=${Number(item.start)}&&nval<=${Number(item.end)}){state = '${item.state}'} `
        }else if(item.sinclusion == 'T' && item.einclusion == 'F'){
            condition += `if(nval>=${Number(item.start)}&&nval<${Number(item.end)}){state = '${item.state}'} `
        }else if(item.sinclusion == 'F' && item.einclusion == 'F'){
            condition += `if(nval>${Number(item.start)}&&nval<${Number(item.end)}){state = '${item.state}'} `
        }else if(item.sinclusion == 'F' && item.einclusion == 'T'){
            condition += `if(nval>=${Number(item.start)}&&nval<=${Number(item.end)}){state = '${item.state}'} `
        }
    })
    eval(condition)
    return state
},
//执行一下
console.log(getState('70')) //后台输出'warning'

知识点:eval()的使用

  1. 可以使用 eval() 方法执行生成的字符串,让其生效。例如,假设我们已经生成了以下的 if 条件语句字符串:
const ifStatement = `
  if (a === b) {
    console.log('a 等于 b');
  } else if (a > 0) {
    console.log('a 大于 0');
  } else if (b < 0) {
    console.log('b 小于 0');
  }
`;

我们可以通过 eval() 方法执行该字符串:

eval(ifStatement);
  1. eval()` 方法不能返回值。因此需要使用一个变量来保存返回值。例如:
const nval = 70;  // 假设 nval 的值为 70
let result;  // 定义一个变量来保存返回值
const ifStatement = `
  if (nval >= 0 && nval <= 50) {
    result = 'normal';
  } else if (nval >= 50 && nval <= 80) {
    result = 'warning';
  } else if (nval >= 80 && nval <= 100) {
    result = 'error';
  }
`;
eval(ifStatement);  // 执行 if 条件语句
console.log(result);  // 输出 'warning'

在上述代码中,我们定义了一个变量 result 来保存返回值。最后执行生成的 if 条件语句字符串,并将返回值保存在 result 变量中。最后输出 result 变量的值。

需要注意的是,使用 eval() 方法存在一定的安全风险,因为它可以执行任意的 JavaScript 代码。建议在使用时谨慎考虑,确保执行的字符串是可信的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值