Как добавить фразу в массив как один элемент с помощью split?

У меня есть строка, которую я превращаю в массив с помощью split(" "). Например:

apple orange pineaple
["apple", "orange", "pineaple"]

Но как я могу добавить два слова в один элемент, чтобы было вот так?

apple orange pineaple "green banana"
["apple", "orange", "pineaple", "green banana"]

Спасибо!


Ответы (1 шт):

Автор решения: Kirzzz

Вот собственно и велосипед.

let text = '"add "2017-04-25 3 " qq"qqq EUR" "Sasha doesnt have" any " friends qqqqq" "qwe qwe qwe qwe"';
let arr = [];
let tempArr = text.split(' ');
for(i=0;i<tempArr.length;i++){//Начали бегать по массиву элементов текста
   if(tempArr[i][0]=='"'){//Проверка открывается ли ковычка
      let tempVar = tempArr[i]+' ';//Положили первый найденный объект после кавычки в переменную
      for(k=i+1;k<tempArr.length;k++){//Запустили цикл поиска закрывающей кавычки
        if(tempArr[k][tempArr[k].length-1]=='"'){//Проверка закрывается ли объект кавычкой
          tempVar+=(tempArr[k]);
          arr.push(tempVar);//Запихнули переменную в общий массив
          i+=k-i;
          break;//Прерываем вложеннный цикл
        }else{
          tempVar+=(tempArr[k]+' ');//Запихиваем промежуточные объекты между кавычками в перменную
          if(k==tempArr.length-1){//Если только одна кавычка
             arr.push(tempVar.split(' ')[0]);
          }
        }
      }
      if(i+1==tempArr.length&&tempVar.split(' ').length==1){
        arr.push(tempVar.split(' ')[0]);
      }
   }else{
      arr.push(tempArr[i]);
   }
}
for(i=0;i<arr.length;i++){
  $("#show").append(arr[i]+'</br>');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='show'></div>

p.s В прошлых изменениях укороченная версия.

→ Ссылка