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文? –