Rumah > Soal Jawab > teks badan
P粉6800875502023-08-19 00:33:06
Anda boleh menjadikan logik anda lebih dipacu data dengan menggunakan objek, contohnya:
var outcomeMap = { active: { active: "a", locked: "b", disabled: "c" }, inactive: { active: "d", locked: "e", disabled: "f", } };
Anda kemudian boleh menggunakan a
访问该对象,并访问嵌套对象的值来设置您的outcome
pembolehubah, contohnya:
var outcome = outcomeMap[a][b];
Sila ambil perhatian bahawa jika a
除了您提到的值之外还可以是任何其他值,最好在访问b
之前检查outcomeMap[a]
是否为undefined
。如果您的环境支持,可以使用可选链来完成,例如:outcomeMap[a]?.[b];
Sebagai alternatif, anda boleh menyediakan tatasusunan yang mengandungi gabungan yang mungkin dan kemudian mengulanginya untuk menyemak sama ada gabungan anda sepadan. Kemudian, berdasarkan indeks semasa, jika hasil ditemui, anda boleh mengindeks pada hasil anda (outcomes
), contohnya:
function getOutcome(a, b) { const aVals = ['active', 'inactive']; const bVals = ['active', 'locked', 'disabled']; const outcomes = [['a', 'b', 'c'], ['d', 'e', 'f']]; for(const [i, aVal] of aVals.entries()) { for(const [j, bVal] of bVals.entries()) { if (aVal == a && bVal == b) { return outcomes[i][j]; } } } // return ''; if you want a default value of empty string } const outcome = getOutcome('inactive','locked'); console.log(outcome);
Sila ambil perhatian bahawa tiada kaedah yang lebih cekap daripada menggunakan pernyataan if. Walau bagaimanapun, jika anda mempunyai lebih banyak kemungkinan, ia sepatutnya lebih mudah untuk skala.