Данный код предназначен для формирования списка уникальных элементов массива, сделанного из двух других.
Тот факт, что списка два и нужно именно два списка преобразовывать в два разных массива. является частью задачи.
Этот код с задачей справляется, но в нём множество глобальных переменных, а это, как мне известно, не является хорошей практикой.
Подскажите, пожалуйста, как можно усовершенствовать его?
<head>
<meta charset="utf-8">
<title>Test</title>
<style>
div {
width: 300px;
margin: 10px;
padding: 2px 5px;
border: 1px solid black;
}
</style>
</head>
<body id="body">
<div>
<ul id="ul1">
<li>Любовь</li>
<li>Надежда</li>
<li>Вера</li>
</ul>
</div>
<div>
<ul id="ul2">
<li>София</li>
<li>Надежда</li>
<li>Вера</li>
</ul>
</div>
<button id="makeNewArray">Создать новый массив</button>
<script type="text/javascript">
function init() {
var btn = document.getElementById('makeNewArray'),
arrLi1 = ul1.getElementsByTagName('li'),
arrLi2 = ul2.getElementsByTagName('li'),
arr1 = [],
arr2 = [],
result = [];
for (var i = 0; i < arrLi1.length; i++) {
arr1.push(arrLi1[i].innerHTML);
}
for (var j = 0; j < arrLi2.length; j++) {
arr2.push(arrLi2[j].innerHTML);
}
commonArr = arr1.concat(arr2);
nextInput:
for (var k = 0; k < commonArr.length; k++) {
var str = commonArr[k];
for (var l = 0; l < result.length; l++) {
if (result[l] == str) continue nextInput;
}
result.push(str);
}
btn.onclick = function() {
var div = document.createElement('div');
div.innerHTML = result;
body.appendChild(div);
};
};
window.onload = init;
</script>
</body>