преобразование сложной строки в массив
Доброго времени суток всем
В общем то проблема вот в чем - от сервера приходит ответ(результат перемножения матриц), например Код:
[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, время: 02:30. |