Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильно разделить массив? (https://javascript.ru/forum/misc/73206-kak-pravilno-razdelit-massiv.html)

Artur_Hopf 29.03.2018 08:44

Как правильно разделить массив?
 
Добрый день. У меня есть массив вида:
var arr = ['вася на пеньке, дупле:2:шт~рыбка соленая, сухая:10:кг~вода озаренная, темная:2:литра'];

Нужно его разделить на составляющие, я делаю так:
var str_arr = arr.toString().split('~');

получаю:
0:"вася на пеньке, дупле:2:шт"
1:"рыбка соленая, сухая:10:кг"
2:"вода озаренная, темная:2:литра"

вроде все хорошо, осталось отделить значения от цифр, повторяю:
var str_arr_2 = str_arr.toString().split(':');

но на выходе получаю не совсем то:
0:"вася на пеньке, дупле"
1:"2"
2:"шт,рыбка соленая, сухая"
3:"10"
4:"кг,вода озаренная, темная"
5:"2"
6:"литра"

Как сделать чтобы шт,кг,литры были отдельно? разделитель между ними ':' и '~', но не пойму как правильно написать чтобы не появлялась строка вида "шт, следующая строка..."

Полный вид:
var arr = ['вася на пеньке, дупле:2:шт~рыбка соленая, сухая:10:кг~вода озаренная, темная:2:литра'];
var str_arr = arr.toString().split('~');
var str_arr_2 = str_arr.toString().split(':');
console.log(str_arr_2);

рони 29.03.2018 09:03

Artur_Hopf,
какой результат нужен?

Artur_Hopf 29.03.2018 09:28

рони,
вот такой:
0:"вася на пеньке, дупле"
1:"2"
2:"шт"
3:"рыбка соленая, сухая"
4:"10"
5:"кг"
6:"вода озаренная, темная"
5:"2"
6:"литра"

рони 29.03.2018 09:39

Artur_Hopf,
<script>
var arr = ['вася на пеньке, дупле:2:шт~рыбка соленая, сухая:10:кг~вода озаренная, темная:2:литра'];
var out = arr[0].split(/[:~]/);
document.write(JSON.stringify(out))
  </script>

Artur_Hopf 29.03.2018 09:51

рони,
Спасибо большое :thanks:

Dilettante_Pro 29.03.2018 10:27

Что-то мне кажется, что результат должен быть таким примерно...
var arr = ['вася на пеньке, дупле:2:шт~рыбка соленая, сухая:10:кг~вода озаренная, темная:2:литра'];
var out = arr[0].split('~');
for(var i= 0; i<out.length; i++){
   out[i] = out[i].split(':');
}
alert(JSON.stringify(out));


Часовой пояс GMT +3, время: 23:54.