JSON 객체의 속성에 액세스하는 데 문제가 있습니다. SheetJS를 사용하여 Excel 파일을 구문 분석하고이를 JSON 객체의 배열로 저장합니다. 이 부분은 잘 작동합니다 (getData() 함수). 이 배열을 구문 분석하고 "RunName"속성이 "NK"로 시작하는 경우 새 속성을 설정하려고합니다. 'setPriority()'함수를 구현하려고 시도했지만 코드에서 RunName 속성을 찾을 수 없어 '해결되지 않은 변수 이름'오류가 발생합니다. 내 코드와 배열의 구조 예를 아래에 추가했습니다. 어떤 도움이라도 대단히 감사합니다. 감사합니다 :)캔트에서 JSON 객체 속성에 액세스
var url = "TestData.xlsx";
var oReq = new XMLHttpRequest();
oReq.open("GET", url, true);
oReq.responseType = "arraybuffer";
function getData() {
oReq.onload = function (e) {
var arraybuffer = oReq.response;
/* convert data to binary string */
var data = new Uint8Array(arraybuffer);
var arr = new Array();
for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
var bstr = arr.join("");
/* Call XLSX */
var workbook = XLSX.read(bstr, {type: "binary"});
/* DO SOMETHING WITH workbook HERE */
var first_sheet_name = workbook.SheetNames[0];
var worksheet = workbook.Sheets[first_sheet_name];
var array = XLSX.utils.sheet_to_json(worksheet, {raw: true});
console.log(array);
setPriority(array);
};
oReq.send();
}
function setPriority(array) {
for (var i = 0; i < array.length; i++) {
switch (array[i].RunName) {
case (/NK/):
array[i].Priority = 2;
}
}
}
완벽하게 작동합니다. 고맙습니다! 제가 잘못 된 곳과 내가 한 것과 당신의 해결책 사이의 차이점을 설명해주십시오. 다시 한 번 감사드립니다! –
@DylanBaxter 몇 가지 설명 추가 - JS regexes 및 스위치에 대한 지식이 제한되어 있지만 잘하면 적어도 뭔가를 정리합니다 – Fissio
설명 해 주셔서 감사합니다. 전체 배열을 검사하고 각 그룹마다 다른 우선 순위를 설정해야하기 때문에 (NK의 우선 순위 1, NB의 우선 순위 2 등) 정규 표현식을 사용하여 첫 번째 문자를 확인해야합니다. 그렇지 않으면, 일련의 if 문? –