如何简化以下功能以减少重复代码?我想将"arg“定义为数组,因为这是每种情况唯一不断变化的方面。
function jumpMovement(iMovement) {
switch (iMovement) {
case 0:
document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"0.0"}', 'https://musescore.com');
break;
case 1:
document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"99.45"}', 'https://musescore.com');
break;
case 2:
document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"201.45"}', 'https://musescore.com');
break;
case 3:
document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"319.49"}', 'https://musescore.com');
break;
default:
document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"0.0"}', 'https://musescore.com');
}
}在html中使用的示例:
<button onclick="jumpFigure(0)">0</button>
<button onclick="jumpFigure(1)">1</button>
<button onclick="jumpFigure(2)">2</button> 等等。
发布于 2022-07-28 11:20:55
您可以完全删除开关(假设iMovement可以用作索引)。
如果iMovement的值传播范围要大得多,那么您可以使用一个开关并相应地设置arg,然后在最后进行DOM调用。
function jumpMovement(iMovement) {
const args = [ 0.0, 99.45, 201.45, 319.49 ]
const arg = args[iMovement] ?? 0.0
document.getElementById('opus-08a').contentWindow.postMessage(`{"method": "seekSeconds", "arg":"${arg.toFixed(2)}"}`, 'https://musescore.com');
}https://codereview.stackexchange.com/questions/278369
复制相似问题