Вам не нужны две функции для этого. Просто установите div, соответствующий divId
, чтобы он был видимым, а остальные скрывайте. Тогда не имеет значения, сколько раз вы нажмете одну и ту же кнопку, этот div будет показан.
var divs = ["Div1", "Div2", "Div3"];
function divVisibility(divId) {
for (var div of divs) {
if (div === divId) {
document.getElementById(div).style.display = 'block';
}
else {
document.getElementById(div).style.display = 'none';
}
}
}
<table style="margin-left: auto; margin-right: auto;" border="0" cellpadding="10">
<tbody>
<tr>
<td><button onclick="divVisibility('Div1');">Div1</button></td>
<td><button onclick="divVisibility('Div2');">Div2</button></td>
<td><button onclick="divVisibility('Div3');">Div3</button></td>
</tr>
</tbody>
</table>
<table>
<div id="Div1">
Div1 Content
</div>
<div id="Div2" style="display: none;">
Div2 Content
</div>
<div id="Div3" style="display: none;">
Div3 Content
</div>
</table>
Хотя
l1.sorted == l2.sorted
правильно, производительность во время выполнения равна O (n log n) из-за сортировки. Для больших списков вам, вероятно, лучше с
l1.groupBy(identity) == l2.groupBy(identity)
, который должен быть O (n), при условии достойной реализации groupBy.