Textarea到过滤数组Javascript

时间:2019-03-20 14:54:25

标签: javascript arrays

我试图获取textarea的值,将其拆分为不同的属性。

文本字段中的数据(这是一个示例,实际输入中有很多空格):

    name       lastname        age             fruit
    john                doe             22             apple
eric                jonsson             23             apple

这是我现在的代码:

        var textareadataData = $('#textareaID').val().split('\n');

结果:

"    name       lastname        age             fruit"
"    john                doe             22             apple"
"eric                jonsson             23             apple"

我希望结果是:

"name","lastname","age","fruit"
"john","doe","22";"apple"
"eric", "jonsson","23","apple"

我试图四处搜寻,但找不到答案。

致敬致敬

4 个答案:

答案 0 :(得分:2)

您可以在第一行之后使用空格分割。

下面的代码通过以下操作将您的换行符加起来:

  1. 过滤掉空行
  2. 将每一行分割为多个空格(不要像您在评论中所说的那样分割green apple
  3. 摆脱嵌套数组的空白元素

// This is your code
var textareaData = $('#textareaID').val().split('\n');

// This is the extra code you can add (split whitespaces and filter out resulting ones)
var words = textareaData
  .filter(x => x.length !== 0)
  .map(x => x.split(/(\s\s+)/))
  .map(x => x.filter(el => el.trim()));

console.log(words)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="textareaID">
    name       lastname        age             fruit
    john                doe             22       green apple
eric                jonsson             23             apple
</textarea>

答案 1 :(得分:0)

请尝试

class Bloc {
  /// Your Bloc Stuff
}

final bloc = Bloc();

正则表达式将所有空间替换为一个空格

然后您可以照常使用split

var string = $('#textareaID').val().replace(/\s+/g,' ')

答案 2 :(得分:0)

尝试在带有正则表达式的单词之间留出一个空格:

var textData = textareadataData.replace(/\s+/g, " ");

然后用空格再次将其分割:

var textDataArray = textData.split(" "); 

就在那里。 您只需要一行就可以完成,但是我只做两行就可以了。

答案 3 :(得分:0)

您可以使用以下代码:

$('#textareaID').val().split('\n').map(val => val.trim().replace(/[ ]+/g, " ").split(" "));

解释代码:

$('#textareaID').val().split('\n')是您的代码

.map()遍历所有行

val.trim()删除外部空白

replace(/[ ]+/g, " ")删除所有重复的空格

split(" ")分割所有内容