【问题标题】:Alternative to eval [duplicate]替代评估 [重复]
【发布时间】:2014-02-24 11:37:07
【问题描述】:

我正在制作一些常用函数,其中我传递数组、数组中的字段名称、数组中的字段值并返回字段名称以返回值,如下所示

function arrayFilter(_array, findField, value, returnField) {
 var temp = "_array[i]." + findField;
 var retValue = "";
 for (var i = 0; i < _array.length; i++) {
   if (eval(temp) == value) {
  return eval("_array[i]." + returnField);
  }
 }
}

但是在网上看的时候发现eval不好,可以有字符串注入攻击。

所以有人在上面帮忙。

【问题讨论】:

  • 你有你循环的数组类型的例子吗?
  • 我问只是因为如果你更好地重组你的数组,就必须有更好的方法来做你想做的事情。
  • 我真的不明白为什么有人问这个。在非常基础的 [] 之前,他们如何了解 eval

标签: javascript jquery arrays eval


【解决方案1】:

代替:

return eval("_array[i]." + returnField);

试试:

return _array[i][returnField];

同时阅读this article

【讨论】:

    【解决方案2】:

    当您的 key 的值未知时,您可以使用 方括号表示法 来访问属性。

    function arrayFilter(_array, findField, value, returnField) {
     var temp = _array[i][findField];
     var retValue = "";
     for (var i = 0; i < _array.length; i++) {
       if (temp == value) {
         return _array[i][returnField];
       }
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2021-03-02
      相关资源
      最近更新 更多