如何基于分隔符拆分输入值并将其推入数组?

时间:2019-02-10 04:39:03

标签: javascript string input split

出于此答案的目的,请知道我是“您好,世界!”级别的初学者,并且仍在学习基础知识。

向前:

我正在尝试接受用户输入并将其放入数组中,并在每个波浪号(〜)处打断字符串。

我主要是从其他来源(谢谢,StackOverflow!)获取此脚本的,并对其进行了编辑以适合(目的不胜枚举)。我觉得我已经很接近答案了,但是最接近的不是雪茄:

当前,此代码在波浪号上中断,但是当我需要将其(分开的)文本存储为单个字符串时,仍然将(拆分)文本存储为单个字符串。

我...假定我需要以某种方式将拆分字符串存储为x = 1的独立数字(1、2等),但是我不确定该怎么做。有想法吗?

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 :(得分:0)

在“〜”字符上分割输入字符串“ a〜b”将创建:["a", "b"]。您正在将该数组推入notesArray的索引。因此,您最终创建了一个二维数组,如下所示:[["a", "b"], ["c", "d"],...]

当您将这些单独的数组连接到字符串e时,它会强制将其创建为逗号分隔的字符串(“ a,b”)。因此,这并非完全像您假设的那样将完整字符串添加到notesArray

如果您希望将各个split字符串添加到notesArray中,则可以改用pushconcat

这是一个有效的代码段:(单击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开始)