Объект JavaScript data
имеет атрибут «амплитуды», который представляет собой конкатенированную последовательность строк массивов битмасок, поступающих с сервера.Возможно ли использование eval() здесь?
var data = {
"amplitudes":
"[1,1,1,4,1,1],[1,1,1,1,1,1],[1,1,4,1,9,1],[1,1,9,1,16,1],[1,32,1,1,1,9],[4,4,4,1,1,1]"
}
.
Это необходимо разбить на шесть независимых массивов. Я использую комбинацию split()
и eval()
выполнить это следующим образом:
var amplitudes = [];
amplitudes = data.amplitudes.split("],[");
for(var i=0;i<amplitudes.length;i+=1){
(i+1)%2>0 ? amplitudes[i] = amplitudes[i] + "]" : amplitudes[i] = "[" + amplitudes[i];
amplitudes[i] = eval(amplitudes[i]);
}
Вопросы
1) Есть более элегантный и эффективный способ сделать это? ? Я не слишком доволен использованием eval(), но чувство раскола более эффективно, чем регулярное выражение? Пока я еще не тестировал.
2) Я также открыт для манипулирования форматом, в котором «амплитуды» поля хранятся в базе данных, так что мой общий дизайн становится проще.
Предложения приветствуются
У меня есть только один амплитуды полей, чтобы сохранить все битмаски вместе в базе данных. «Амплитуды» - один из многих атрибутов, которые отправляются в json – papdel 2010-11-24 16:54:35
Пример Json: {«options»: «a, b, c», «qs_id»: 4, «амплитуды»: «[1,1,1 , 4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], [1,1,1,1,1,1,1,1 , 1,1,1,1,1,1,1,1,1,1,1] ", " Требования ":" 1,2,2,1,2,2,2,2,2,2 , 2,2,2,2,2,2,2,2,2,2 "} – papdel 2010-11-24 16:55:42
Вы сохраняете« амплитуды »как * строку *, как в базе данных? Тьфу. – Pointy 2010-11-24 17:02:26