使用动态字符串名称

时间:2017-03-08 16:44:56

标签: javascript jquery arrays

我有一个数组。

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

2 个答案:

答案 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。