我有一个数组。
var ABCD=[{Key:"Milk",Value:"1" },{Key:"Bread",Value:"2" }];
现在需要使用动态字符串值(从function myFunction("guest_user")
返回)来查找此数组中的键(ABCD)。我正在使用类似这样的东西,因为eval()
而在除了IE之外的所有浏览器中工作,如果有人可以就此提出建议,那就太棒了。
var entry = eval(myFunction("guest_user")).find(function(e) { return e.Key === "Milk"; });
返回值myFunction("guest_user")
是ABCD,它是上面定义的数组名称。
myFunction正在返回一个请求参数..
function myFunction(key) {
var result = new RegExp(key + "=([^&]*)", "i").exec(window.location.search);
return result && unescape(result[1]) || "";
}
答案 0 :(得分:0)
IE11中的问题是不 registrador_nivel
功能。这是eval()
方法。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find,您会发现Internet Explorer中不支持find()
。
但是,您可以使用同一链接中的 Polyfill 向IE添加功能。
尽管如此,最好完全避免使用find()
。您可以将数组放在一个对象中,例如:
eval()
然后,您可以通过调用:
来引用相应的数组var obj = {ABCD: [{Key ...}];
答案 1 :(得分:0)
添加polyfill方法(Adding a function to Array.prototype in IE results in it being pushed in to every array as an element),并且Rick建议obj [myFunction(" guest_user")]。find(正在使用IE。