eval的替代品

时间:2014-02-24 11:37:08

标签: javascript jquery arrays eval

我正在做一些常见的功能,在我传递数组时,数组中的字段名,数组中字段的值和返回字段名返回值如下所示

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不好,它可以进行字符串注入攻击。

所以有人在上面提供帮助。

2 个答案:

答案 0 :(得分:3)

而不是:

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

尝试:

return _array[i][returnField];

并阅读this article

答案 1 :(得分:1)

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

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];
   }
 }
}