Я пытаюсь взять значение 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"
Я пытался искать вокруг, но не нашел ответа.
С наилучшими пожеланиями Виак Полезно Бесполезно



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Пожалуйста попробуйте
var string = $('#textareaID').val().replace(/\s+/g,' ')
Регулярное выражение заменит все пробелы одним пробелом
тогда вы можете использовать разделение как обычно
string.split(" ");
извините, я забыл "заменить функцию"
или просто .split(/\s+/)
Вы можете использовать разделение пробелами после того, как для новой строки.
В приведенном ниже коде добавляется разделение новой строки с помощью операций:
green apple, как вы сказали в комментарии)// 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.info(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>Хм, почти работает. Он также считает пробелы собственностью. Вы знаете, как избавиться от этого?
Добавлен рабочий пример с дополнительным отзывом, который вы предоставили.
В моих массивах у меня есть несколько массивов, в которых есть пробелы, но они отфильтрованы как собственный пример массива «зеленое яблоко», и результат «зеленый», «яблоко», но я хочу «зеленое яблоко»... Вы здесь можно помочь? (Это работает как шарм, за исключением этой ошибки).
Затем регулярное выражение можно изменить так, чтобы оно соответствовало более чем одному пробелу, путем преобразования \s+ в \s\s+. Добавил с примером green apple, посмотрите.
Это исправило это! Спасибо!
Попробуйте оставить один пробел между словами с регулярным выражением:
var textData = textareadataData.replace(/\s+/g, " ");
Затем снова разделите его пробелами:
var textDataArray = textData.split(" ");
И вот оно. Вы можете сделать это всего одной строкой, но я сделал это двумя, просто чтобы объяснить.
Я получаю следующую ошибку: $(...).val(...) не является функцией @Maxime опубликовал то же самое
Конечно, если вы напишете '$('#textareaID').val()(/\s+/g,' ')´ вы получите эту ошибку, но вам нужно написать ее так: $('#textareaID') .val().replace(/\s+/g," ").split("")
Вы можете использовать следующий код:
$('#textareaID').val().split('\n').map(val => val.trim().replace(/[ ]+/g, " ").split(" "));
Чтобы объяснить код:
$('#textareaID').val().split('\n') это ваш код
.map() перебирает все строки
val.trim() удаляет внешние пробелы
replace(/[ ]+/g, " ") удаляет все повторяющиеся пробелы
split(" ") разделяет все
Можете ли вы предоставить демо-версию JSfiddle?
Я получаю следующую ошибку: $(...).val(...) не является функцией