我在前端存储了以下数组。
myArr[0] = new Array("AF", "B", "C", "D", "EM", "F", "G", "H", "I", "J");
myArr[1] = new Array("C", "DD", "M", "ED", "F", "DG", "B", "C", "D", "C");
myArr[2] = new Array("F", "G", "H", "I", "E", "F", "G", "H", "I", "J");
我需要获取数组中元素的值。例如myArr [0] [0]应该返回AF。不幸的是,我正在通过服务调用从以下位置找到要作为数组字符串的数组。
["myArr[1][6]", "myArr[3][4]", "myArr[4][2]"]
我该如何转换并获得上述数组位置的值。提前致谢。
答案 0 :(得分:3)
您可以使用eval将字符串作为脚本执行:
eval("myArr[1][6]") // gives "C"
在此处查看codepen:https://codepen.io/jenko3000/pen/NZJRYK
但是请注意,将字符串作为脚本执行是dangerous。
答案 1 :(得分:1)
您可以使用正则表达式“提取”两个索引,然后使用它们来获取值,如下所示:
let myArr = [];
myArr[0] = new Array("AF", "B", "C", "D", "EM", "F", "G", "H", "I", "J");
myArr[1] = new Array("C", "DD", "M", "ED", "F", "DG", "B", "C", "D", "C");
myArr[2] = new Array("F", "G", "H", "I", "E", "F", "G", "H", "I", "J");
let arr = ["myArr[1][6]", "myArr[2][4]", "myArr[0][2]"];
let res = arr.map(str => {
let [x, y] = str.match(/(\d+)/g);
return myArr[x][y];
});
console.log(res);
答案 2 :(得分:1)
无需使问题复杂化。在每个值上加上一个简单的map
和eval
uate就足够了:
const myArr = [
["AF", "B", "C", "D", "EM", "F", "G", "H", "I", "J"],
["C", "DD", "M", "ED", "F", "DG", "B", "C", "D", "C"],
["F", "G", "H", "I", "E", "F", "G", "H", "I", "J"]
]
var positions = ["myArr[1][6]", "myArr[2][4]", "myArr[0][2]"]
positions = positions.map(eval)
console.log(positions)
请注意,我们可以在
.map(eval)
上使用速记.map(e => eval(e))
,因为我们只将一个元素传递给一个函数,因此速记将为我们做到这一点。此外,正如Will所指出的那样,eval可能很危险,因为eval可以执行恶意脚本。
答案 3 :(得分:0)
此代码将用各自的值替换存储在数组中的位置。
let myArr=[]
myArr[0] = new Array("AF", "B", "C", "D", "EM", "F", "G", "H", "I", "J");
myArr[1] = new Array("C", "DD", "M", "ED", "F", "DG", "B", "C", "D", "C");
myArr[2] = new Array("F", "G", "H", "I", "E", "F", "G", "H", "I", "J");
let values=["myArr[1][6]", "myArr[2][4]", "myArr[0][2]"];
for (var i = 0; i < values.length; i++)
{
values[i]=eval(values[i])
}
console.log(values)