Разделение входной строки «a ~ b» на символ «~» создает: ["a", "b"]
.Вы толкаете этот массив к индексам notesArray
.Таким образом, вы в конечном итоге создаете 2-мерный массив, подобный этому: [["a", "b"], ["c", "d"],...]
Когда вы объединяете эти отдельные массивы в строку e
, принудительно заставляет их создать запятуюстрока ("a, b").Таким образом, это не совсем добавление полной строки к notesArray
, как вы и предполагали.
Если вы хотите, чтобы отдельные строки split
были добавлены в notesArray
, вы можете использовать push
или concat
вместо
Вот рабочий фрагмент: (Нажмите на Run code snippet
, чтобы проверить это)
var notesArray = Array();
function add_element_to_array() {
let splits = document.getElementById("text1").value.split('~');
// loop through each item splits and push it to notesArray
for (var i = 0; i < splits.length; i++) {
notesArray.push(splits[i]);
}
/*
// you can also do this using concat:
notesArray = notesArray.concat(splits);
// or using the new spread syntax
notesArray.push(...splits);
*/
document.getElementById("text1").value = "";
}
function display_array() {
var e = "<hr/>";
for (var y = 0; y < notesArray.length; y++) {
e += "Element " + y + " = " + notesArray[y] + "<br/>";
}
document.getElementById("Result").innerHTML = e;
}
<input type="text" id="text1"></input>
<input type="button" id="button1" value="Add" onclick="add_element_to_array();"></input>
<input type="button" id="button2" value="Display" onclick="display_array();"></input>
<div id="Result"></div>
(Кроме того, я изменил цикл for
, чтобы он начинал с функции 0
в display_array
, так как индексы массива начинаются с 0
)