преобразование сложной строки в массив
Доброго времени суток всем
В общем то проблема вот в чем - от сервера приходит ответ(результат перемножения матриц), например Код:
[1, 2][3, 6] var arr = [[1, 2], [3, 6]] Знаю про split, но какое рег. выражение туда записать? ps: я сделал так: удалил крайние скобки, потом разбить по '][', а потом по ', '. Но может есть способ получше? |
метод наверно не самый лучший но можно так:
<script type="text/javascript"> str='[1, 2][3, 6]'; eval('var arr=['+str.replace(/\]\[/g,'],[')+']'); document.write(arr[0][0]+' '+arr[0][1]+' '+arr[1][0]+' '+arr[1][1]); </script> |
либо так:
var data = '[1, 2][3, 6]'; var arr = (new Function('return [' + data.replace('][', '], [') + ']'))(); console.log(arr); Выбирай :) |
var str = '[1, 2][3, 6]'; str = str.match(/\d+/g); str = [ [str[0], str[1]], [str[2], str[3]] ] alert( str ); |
Цитата:
|
Я бы сделал как exec. Хотя по-уму with-love-from-siberia, конечно, прав.
|
Парсить регулярками свои же данные -- бред.
|
За то мой код без проблем сожмется :)
|
with-love-from-siberia,
на сервере матрицы перемножаются на python'e вот так с = a*bи с сразу идет в ответ. Можно конечно крайние скобки обрезать там, но это не сильно облегчит задачу я думаю Sweet, Дело в том, что у exec код привязан к размеру матрицы 2х2 :( B~Vladi, у тебя тоже почему то работает только для размера 2х2, хотя так и не вкурил почему :( Вроде все верно написано зы: взял код рони, спасибо |
Rifler, Вы
а) либо на сервере генерируйте правильные данные, чтобы клиентская часть "не задумывалась" о корректности данных, б) либо корректируйте данные на клиенте, универсально, например: var data = '[1, 2, 3][4, 5, 6][7, 8, 9]'; var arr = eval('[' + data.replace(/\]\[/g, '],[') + ']'); alert(arr.join('\n')); |
Часовой пояс GMT +3, время: 12:22. |