Javascript 无法访问JSON对象属性

Javascript 无法访问JSON对象属性,javascript,arrays,json,object,Javascript,Arrays,Json,Object,访问JSON对象的属性时遇到问题。我使用SheetJS解析excel文件并将其存储为JSON对象数组。这部分工作正常(getData()函数)。如果“RunName”属性以“NK”开头,我想解析这个数组并设置一个新属性。我试图实现“setPriority()”函数,但代码找不到RunName属性,导致“unresolved variable name”错误。我在下面添加了我的代码和一个数组结构示例。非常感谢您的帮助。 谢谢:) var url=“TestData.xlsx”; var oReq=

访问JSON对象的属性时遇到问题。我使用SheetJS解析excel文件并将其存储为JSON对象数组。这部分工作正常(getData()函数)。如果“RunName”属性以“NK”开头,我想解析这个数组并设置一个新属性。我试图实现“setPriority()”函数,但代码找不到RunName属性,导致“unresolved variable name”错误。我在下面添加了我的代码和一个数组结构示例。非常感谢您的帮助。 谢谢:)

var url=“TestData.xlsx”;
var oReq=新的XMLHttpRequest();
open(“GET”,url,true);
oReq.responseType=“arraybuffer”;
函数getData(){
oReq.onload=函数(e){
var arraybuffer=oReq.响应;
/*将数据转换为二进制字符串*/
var数据=新的Uint8Array(arraybuffer);
var arr=新数组();
对于(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);
var bstr=arr.join(“”);
/*调用XLSX*/
var workbook=XLSX.read(bstr,{type:“binary”});
/*在这里用工作簿做些什么*/
var first_sheet_name=workbook.SheetNames[0];
var工作表=工作簿.工作表[第一张工作表名称];
var array=XLSX.utils.sheet_to_json(工作表,{raw:true});
console.log(数组);
设置优先级(数组);
};
oReq.send();
}
函数设置优先级(数组){
对于(var i=0;i
试试看

switch (array[i].RunName.indexOf('NK')) {

    case (0):
        array[i].Priority = 2;
}
switch
语句对开关括号内的表达式求值,然后尝试使用严格比较将求值表达式与大小写表达式匹配,因此使用
==
。例如,如果我们有以下代码:

var i = 5;
switch (i) {
  case ("5"):
    console.log("Five as string");
    break;
  case (5):
    console.log("Five");
    break;
}
首先,计算
i
,得到值
5
。然后逐个计算案例表达式,首先测试
5==“5”
,这是错误的。然后是下一个,
5===5
,这是真的,因此执行case块中的代码


我不确定正则表达式以及为什么会出现这样的错误,但在任何情况下,
“NK”===/NK/
都是false,因此它不可能匹配。解决方案只是使用一个计算结果为易于比较的值的开关表达式,并相应地创建大小写表达式-因此在开关表达式中,我们检查第一次出现的
“NK”
,的索引,如果它发生在索引0(字符串的第一个索引)处,我们将在case块内执行代码。

这非常有效。非常感谢。你能解释一下我哪里出错了,我所做的和你的解决方案之间的区别吗?再次感谢@DylanBaxter补充了一些解释——我对JS正则表达式和开关的了解是有限的,但希望它至少澄清了一些关于解释的问题,真的很有帮助。因为我需要检查整个数组并为每个组设置不同的优先级(例如,NK的优先级为1,NB的优先级为2等),所以我需要使用正则表达式来检查第一个到第二个字符。否则,一系列if语句?我已经解决了这个问题。我正在使用:'switch(array[I].RunName.substring(0,2){case('NK'):数组[I]。优先级=1;break;case('NB'):数组[I]。优先级=2 break;}'
var i = 5;
switch (i) {
  case ("5"):
    console.log("Five as string");
    break;
  case (5):
    console.log("Five");
    break;
}