У меня возникли проблемы с доступом к объекту объекта 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 ограничены, но, надеюсь, он очищает хотя бы что-то до – Fissio
Спасибо за объяснение, действительно помогает. Поскольку мне нужно проверить весь массив и установить другой приоритет для каждой группы (например, приоритет 1 для NK, приоритет 2 для NB и т. Д.), Мне нужно будет использовать регулярные выражения для проверки символов первого. В противном случае, последовательность утверждений if? –