2013-06-25 6 views
0

пожалуйста помочь мне в этом ,,,как создать яваскрипт массив из массива TCL

У меня есть массив TCL под названием all_tags ,, но дело в том, что мне нужно, чтобы преобразовать его в яваскрипта массива в моей странице, но я слабый, когда дело доходит до javascript.

, пожалуйста, сообщите мне, если ниже правильно, а если нет, то какой правильный путь?

<script> 
var mytags = new Array(); 
<% 
foreach tag $all_tags { 
    ns_puts [subst { 
     mytags.push('$tag'); 
     }] 
} 
%> 
</script> 

и после этого можно использовать мой массив javascript в tcl proc?

+0

Это массив или список? Tcl-массивы больше похожи на объекты JS, чем массивы JS (которые в свою очередь больше похожи на списки Tcl). –

+0

ну, это был массив tcl, но теперь я превратил его в список tcl {{значение ключа} {значение ключа} ....} ,, и мне нужно превратить его в массив javascript ключа и значения ,, вы можете помочь мне с этим, пожалуйста? – sisimh

ответ

1

Чтобы повернуть данные в Tcl в JSON, вам нужен пакет json::write от Tcllib. Вы бы использовать его как это сделать объект JSON из массива Tcl (и подобный подход работает для Tcl словарей):

package require json::write 

set accumulate {} 
foreach {key value} [array get yourArray] { 
    lappend accumulate $key [json::write string $value] 
} 
set theJsonObject [json::write object {*}$accumulate] 

Чтобы включить список Tcl в массив JSON:

package require json::write 
set accumulate {} 
foreach item $yourList { 
    lappend accumulate [json::write string $value] 
} 
set theJsonArray [json::write array {*}$accumulate] 

Обратите внимание, что в этих двух случаях я предполагал, что все значения должны быть представлены как строки JSON. Если значения для встраивания - это числа (или true или false), вам не нужно ничего делать; значения, как Tcl видит, что они работают отлично, как JSON-литералы. Встраивание списков/массивов/dicts принимает «рекурсивное» использование json::write и немного больше планирования - это не автоматическое, так как Tcl и JSON имеют очень разные понятия типов.

+0

Если у вас есть что-то конкретное, чего вы хотите достичь, задайте еще один вопрос с более подробной информацией, чтобы он лучше подсказывал нам полезный ответ. –

+0

большое спасибо! да, это превратилось в список json :) Я хотел использовать его, чтобы продолжать изменять содержимое списка выбора на основе изменений, которые происходят в массиве tcl: D Большое спасибо @Donal Fellows – sisimh