2014-02-24 59 views
0

我在做一些常见的功能,其中在我通过数组,从数组字段的名称,在数组字段的值,并返回字段名返回值,如下替代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不好,它可能会发生字符串注入攻击。

所以有人帮助上面。

+0

你有一个你正在循环的数组类型的例子吗? – Andy

+0

我只问,因为要更好地重构阵列,必须有更好的方法来做你想做的事情。 – Andy

+0

我真的不明白为什么连人们都这么问。在非常基本的'[]'之前,他们如何学习'eval'? –

回答

3

相反的:

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

尝试:

return _array[i][returnField]; 

而且还读this article

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