Как разделить входное значение на основе разделителя и поместить их в массив? - PullRequest
0 голосов
/ 10 февраля 2019

Для целей этого ответа, пожалуйста, знайте, что я новичок в мире "Здравствуй, мир!" И все еще изучаю основы.

Вперед:

Я пытаюсь принять пользователявведите и поместите его в массив, разбивая строку в каждой тильде (~).

Я в основном взял этот скрипт из других источников (Спасибо, StackOverflow!) и отредактировал его так, чтобы он подходил (ломая его слишком многораз посчитать) мои цели. Я чувствую, что я довольно близок к ответу, но близко не сигара:

В настоящее время этот код разбивается на тильду, но по-прежнему сохраняет (разделенный) текст в виде одной строки, когдаМне нужно, чтобы он хранился как отдельные строки.

Я ... предполагаю, что мне нужно каким-то образом хранить разделенные строки как отдельные цифры (1,2 и т. Д.) Согласно x = 1, но яне уверен, как это сделать. Мысли?

var x = 1;
var notesArray = Array();

window.add_element_to_array = function add_element_to_array()
{
 notesArray[x] = document.getElementById("text1").value.split('~');
 alert("Element: " + notesArray[x] + " Added at index " + x);
 x++;
 document.getElementById("text1").value = "";
}

window.display_array = function display_array()
{
   var e = "<hr/>";   

   for (var y=1; y<notesArray.length; y++)
   {
     e += "Element " + y + " = " + notesArray[y] + "<br/>";
   }
   document.getElementById("Result").innerHTML = e;
}
<input type="text" id="text1"/>
<input type="button" id="button1" value="Add"  onclick="add_element_to_array();"/>
<input type="button" id="button2" value="Display"  onclick="display_array();"/>
<div id="Result"></div> 

1 Ответ

0 голосов
/ 10 февраля 2019

Разделение входной строки «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)

...