Mam następujące tablica i chcę utworzyć z niej nieuporządkowaną listę, ale mam problem z generowaniem listy nieuporządkowanej we właściwym formacie. Przeszukałem podobne pytania, ale żadne z istniejących rozwiązań nie działa na mój problem.JavaScript: Jak utworzyć nieuporządkowaną listę z tablicy?
var myArray = ['Value 1', ['Inner value 1', 'Inner value 2', 'Inner value 3', 'Inner value 4'], 'Value 2', 'Value 3', 'Value 4', 'Value 5', 'Value 6'];
Oto mój kod JavaScript:
function arrToUl(arr) {
var div = document.getElementById('myList');
var ul = document.createElement('ul');
for (var i = 0; i < arr.length; i++) {
if (arr[i] instanceof Array) {
var list = arrToUl(arr[i]);
} else {
var li = document.createElement('li');
li.appendChild(document.createTextNode(arr[i]));
console.log(ul.appendChild(li));
}
div.appendChild(ul);
}
}
arrToUl(myArray);
Powyższy kod powoduje następujący wynik:
<ul>
<li>Value 1</li>
<li>Inner Value 1</li>
<li>Inner Value 2</li>
<li>Inner Value 3</li>
<li>Inner Value 4</li>
<li>Value 2</li>
<li>Value 3</li>
<li>Value 4</li >
<li>Value 5</li >
<li>Value 6</li>
Ale wynik powinien wyglądać jak poniżej:
<ul>
<li>Value 1
<ul>
<li>Inner Value 1</li>
<li>Inner Value 2</li>
<li>Inner Value 3</li>
<li>Inner Value 4</li>
</ul>
</li>
<li>Value 2</li>
<li>Value 3</li>
<li>Value 4</li>
<li>Value 5</li>
<li>Value 6</li>
Dziękuję za pomoc.
Jakie jeżeli wynik gdyby myArray = [ 'wartość 1' [ 'wartość wewnętrznej 1', 'wartość wewnętrzna 2', 'wartość wewnętrzna 3', „wartość Wewnętrzna 4 '], [' Wartość wewnętrzna 5 ',' Wartość wewnętrzna 6 ',' Wartość wewnętrzna 7 ',' Wartość wewnętrzna 8 '], "Wartość 2", "Wartość 3", "Wartość 4", "Wartość 5", "Wartość 6"]? –
Użycie * instanceof * do wykrycia tablicy jest niewiarygodne, użyj zamiast tego [* Array.isArray *] (http://ecma-international.org/ecma-262/7.0/index.html#sec-array.isarray). – RobG