javascript - 使用变量引用数组

标签 javascript arrays variables reference

我正在编写一个页面,用于收集装配中安装的零件的序列号。如果可以的话,我想在客户端验证用户输入。

因此,如果我有多个密集数组,如何使用变量引用它们?例如,假设我有三个密集排列的数组,其名称代表零件号,其值代表序列号(已在其他组件中使用)。

arr_PN-123-ABC = ('SN0123','SN0124','SN0125')
arr_PN-456-DEF = ('SN00333','SN00334','SN00335')
arr_PN-789-GHI = ('SN-0001','SN-0002','SN-0003','SN-0004')

function fcnValidateSN(_givenPN, _givenSN) {

  //make sure the given values are not null or empty...

  //derive the array of serial numbers that coorsponds to the given part number...
  var vArrName = "arr_" + vGivenPN;

  //loop thru the array of serial numbers to determine if the given sn was already used...
  for(var x=0; x < vArrName.length(); x++) {
    if(vArrName[x]==_givenSN) {
      alert("Serial number '" + _givenSN + "' was already used in another assembly.");
      theForm.txtPN.focus();
      return;
    }


  } //end 'for' loop

} //end fcnValidateSN()

所以问题是“vArrName”是一个值为“arr_”的字符串,而不是对名称为“arr_”的数组的引用。

我尝试用 eval() 函数包装它,但 eval() 将破折号视为减号。

另外一点:我不能使用 jquery 来完成这项工作。

谢谢

最佳答案

您无法生成对用 var 声明的变量的引用(除非见下文)。您可以使用动态属性名称来引用对象的属性,因此:

var arrays = {
  "arr_PN-123-ABC": ['SN0123','SN0124','SN0125'],
  "arr_PN-456-DEF": ['SN00333','SN00334','SN00335'],
  // ...
};

然后:

console.log( arrays["arr_PN-" + num + "ABC"][0] ); // SN0123

请注意,您不能在变量名称中使用“-”,但可以在对象属性名称中使用它。

浏览器中的全局变量无法通过动态名称访问 var 变量。这些变量最终都成为 window 对象的属性。

关于javascript - 使用变量引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788139/

相关文章:

linux - 连接变量的问题,cat 和 cut 命令的结果

javascript - 如何使用javascript在文本字段中输入文本

javascript : blocked scope inside loop , 性能差异

javascript - Angular 1.5 不更新 ng-repeat

arrays - 按值搜索数组中的哈希

javascript - 将数组中的值与 JavaScript 中的数字进行比较

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - 为什么Koa ctx.body在if语句中不起作用?

python - numpy : Get the element of array which contains True on comparions

android - 让 Intent 转到我的主 xml 文件中的布局