javascript - 使用 eval 函数访问数组

标签 javascript function eval

我已经使用 for 循环和 eval 函数成功访问了不同的数组及其元素,如下所示:

var Array1 = [A,B,C,D];
var Array2 = [D,B,C,A];
var Array3 = [B,C,A,D];
var Array4 = [A,D,B,C];

for(var row = 1; row <=4; row++){
  for(var column = 0; column <=3; column++){
    if(row<4 && eval("Array" + row)[column] == eval("Array" + (row +1))[column]){
       console.log("Value of Array" + row + "column" + column + "is equal to" + "value of Array" + eval(row + 1) + "column" + column + "\n");
    }
  }
}

我的问题是,我是否正确使用了 eval 函数。如果这不是使用 eval 函数的正确方法,如何在不使用 eval 函数的情况下动态访问 for 循环中的不同数组?

最佳答案

像这样使用eval虽然可能有效,但却是一个坏主意,并且很容易编写出危险的代码。由于无论实际传递什么内容,eval 都会执行其参数,因此导致传递错误参数的错误可能会比不使用 eval 时产生更严重的后果>。 this SO question的答案提供更多见解。相反,请考虑使用数组对象:

var arrays = {
    Array1: [A,B,C,D],
    Array2: [D,B,C,A],
    Array3: [B,C,A,D],
    Array4: [A,D,B,C]
}

for(var row = 1; row <=4; row++){
  for(var column = 0; column <=3; column++){
    if(row<4 && arrays["Array" + row][column] == arrays["Array" + (row + 1)][column]){
       console.log("Value of Array" + row + "column" + column + "is equal to" + "value of Array" + (row + 1) + "column" + column + "\n");
    }
  }
}

关于javascript - 使用 eval 函数访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43713663/

相关文章:

javascript - 获取下拉信息的按钮

javascript - 在 try/catch 中评估 Rhino 中的错误

javascript - 为什么 ng-pattern 无法正确验证非用户输入事件的更改?

javascript - ajax 加载内容中的 Ajax 链接

javascript - 如何使用已有的 REST API 后端在 Angular 应用程序中实现登录系统

javascript - 向 http 请求添加事件监听器 (request.on) 意味着什么?它有什么用?

c++ - 如何正确地将参数从结构传递给函数?

r - 如何构建一个循环数据帧并转换其中数据的函数 (R)

php - PHP eval 的限制

javascript - 如何正确使用eval()来解析无效的Json