Textarea для отфильтрованного массива Javascript

Я пытаюсь взять значение 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"

Я пытался искать вокруг, но не нашел ответа.

С наилучшими пожеланиями Виак Полезно Бесполезно

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
107
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Пожалуйста попробуйте

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

Регулярное выражение заменит все пробелы одним пробелом

тогда вы можете использовать разделение как обычно

string.split(" ");

Я получаю следующую ошибку: $(...).val(...) не является функцией

wiaK 20.03.2019 16:19

извините, я забыл "заменить функцию"

Maxime Girou 20.03.2019 16:26

или просто .split(/\s+/)

Victor 20.03.2019 16:28
Ответ принят как подходящий

Вы можете использовать разделение пробелами после того, как для новой строки.

В приведенном ниже коде добавляется разделение новой строки с помощью операций:

  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.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>

Хм, почти работает. Он также считает пробелы собственностью. Вы знаете, как избавиться от этого?

wiaK 20.03.2019 16:09

Добавлен рабочий пример с дополнительным отзывом, который вы предоставили.

vahdet 20.03.2019 20:09

В моих массивах у меня есть несколько массивов, в которых есть пробелы, но они отфильтрованы как собственный пример массива «зеленое яблоко», и результат «зеленый», «яблоко», но я хочу «зеленое яблоко»... Вы здесь можно помочь? (Это работает как шарм, за исключением этой ошибки).

wiaK 21.03.2019 08:34

Затем регулярное выражение можно изменить так, чтобы оно соответствовало более чем одному пробелу, путем преобразования \s+ в \s\s+. Добавил с примером green apple, посмотрите.

vahdet 21.03.2019 09:18

Это исправило это! Спасибо!

wiaK 21.03.2019 09:50

Попробуйте оставить один пробел между словами с регулярным выражением:

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

Затем снова разделите его пробелами:

var textDataArray = textData.split(" "); 

И вот оно. Вы можете сделать это всего одной строкой, но я сделал это двумя, просто чтобы объяснить.

Я получаю следующую ошибку: $(...).val(...) не является функцией @Maxime опубликовал то же самое

wiaK 20.03.2019 16:22

Конечно, если вы напишете '$('#textareaID').val()(/\s+/g,' ')´ вы получите эту ошибку, но вам нужно написать ее так: $('#textareaID') .val().replace(/\s+/g," ").split("")

Kashmir54 20.03.2019 16:28

Вы можете использовать следующий код:

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

Чтобы объяснить код:

$('#textareaID').val().split('\n') это ваш код

.map() перебирает все строки

val.trim() удаляет внешние пробелы

replace(/[ ]+/g, " ") удаляет все повторяющиеся пробелы

split(" ") разделяет все

Можете ли вы предоставить демо-версию JSfiddle?

Marvin Fischer 20.03.2019 17:18

Другие вопросы по теме