Это звучит как проблема с JSLint.
Это не совсем то, что вы просили, а один из способов переформулировать код и полностью избежать switch
(и, следовательно, проблемы, с которыми JSLint сталкивается с switch
) означает .find
Part
, чьи ButtonText
совпадают. Затем используйте скобки для поиска кнопки на this
:
const currentText = curButton.button.innerText.toLowerCase();
const matchingPart = ['Part1', 'Part2', 'Part3']
.find(part => currentText === this[part].Button.ButtonText.toLowerCase());
if (matchingPart) {
const { button } = this[matchingPart];
button.ButtonText = curButton.button.innerText;
button.Element = curButton.button;
button.CurrentClass = curButton.button.className;
console.log(smgData.PodCast.Parts[matchingPart].Button);
}
Если вы можете контролировать форму объекта this
, вероятно, было бы легче, если бы Part
s былимассив, а не 3 разных свойства. Тогда вы могли бы .find
над этим массивом вместо жесткого кодирования свойств 3 Part
.
Я бы посчитал приведенный выше код совершенно прекрасным , но чтобыон проходит все правила JSLint (IMO - самоуверенные и не очень хорошие), это должно быть
const currentText = curButton.button.innerText.toLowerCase();
const props = ["Part1", "Part2", "Part3"];
const matchingPart = props.find(function(part) {
return currentText === this[part].Button.ButtonText.toLowerCase();
});
if (matchingPart) {
const { button } = this[matchingPart];
button.ButtonText = curButton.button.innerText;
button.Element = curButton.button;
button.CurrentClass = curButton.button.className;
console.log(smgData.PodCast.Parts[matchingPart].Button);
}