#1 08.04.11 14:34
[js]экпорт инициализированного массива
ну-ка, у вас сейчас будет шанс заработать мой респект :3
суть такова, есть приложение, с самопальным двухмерным массивом типа
Код: javascript:
function item () { //типа мой кастомный класс, неважно какие поля this.id = null; this.field = null; } var a = new Array(); // наш основной массив объектов var item1 = new item ; // объявляем экземпляр нашего класса item item1.id = 1; // заполняем значениями наш объект, неважно какими item1.field = "field1"; a.push(item1); // добавляем наш объект в основной массив объектов. //и так много раз
в итоге получается, очевидно, сгенерированный массив a объектов типа item.
вопрос: как мне сграбить этот массив целиком, например, через фаербаг, чтобы потом в другой скрипт скопипастить и объявить его, например, global static и обращаться к нему.
1. как сграбить
2. как вставить его потом и проинициализировать.
Исправлено Укроп (08.04.11 14:35)
Offline
#3 08.04.11 16:22
Re: [js]экпорт инициализированного массива
Jaguar, не ты не совсем понял. в одном скрипте просто генерится массив, потом как то я его хочу взять упакованным или еще каким и просто вставить в другой скрипт, чтобы это были статические данные уже.
JSON либы - костыли-костылики, вот я и интересуюсь, есть ли нативные средства из одного скрипта экпортировать данные в другой, при условии что массив будет довольно большой и хотелось бы его даже как-то упаковать, например.
Offline
#4 08.04.11 16:37
Re: [js]экпорт инициализированного массива
Укроп написал(а):
в одном скрипте просто генерится массив, потом как то я его хочу взять упакованным или еще каким и просто вставить в другой скрипт, чтобы это были статические данные уже.
т.е. ты его хочешь использовать в таком же JS-скрипте?
у меня примерно такая же задача была... я сгенерировал файл array.js вида:
Код::
var page = new Object(); page['size'] = '23'; page['214_627'] = new Object(); page['214_627']['index'] = '1'; page['214_627']['prev']='211_626'; page['214_627']['next']='215_628'; page['211_626'] = new Object(); page['211_626']['index'] = '1'; page['211_626']['prev']='211_626'; page['211_626']['next']='215_628'; page['215_628'] = new Object(); page['215_628']['index'] = '2'; page['215_628']['prev']='211_626'; page['215_628']['next']='215_629'; page['215_629'] = new Object(); page['215_629']['index'] = '3'; page['215_629']['prev']='215_628'; page['215_629']['next']='215_630'; ....
подрубил его до других js-файлов и уже внутри использовал примерно так:
Код::
function setNav(curPage) {
if ( $("#prev").html() ){
if(page[curPage]['prev'] != curPage) {
$("#prev").html('<a href="main.html?'+page[curPage]['prev']+'"><< Previous</a>');
}
}
if ( $("#next").html() ){
if(page[curPage]['next'] != curPage) {
$("#next").html('<a href="main.html?'+page[curPage]['next']+'">Next >></a>');
}
}
if ( $('#curPageIndex').html() ){
$("#curPageIndex").html(page[curPage]['index']+' of '+page['size']);
}
$("#print").html('<a href="print.html?'+curPage+'" target=_blank>Print</a>');
$("#bookmark").html('<a href="javascript: setBookmark(\''+curPage+'\');">Bookmark</a>');
}если же тебе надо использовать в скрипте на другом языке, то тут либо надо генерировать сразу массив на том языке, либо приводить к какому-то стандарту... один из таких стандартов - это JSON
Offline
#5 08.04.11 17:35
Re: [js]экпорт инициализированного массива
1. alert(JSON.stringify(a));
ну или просто в консоли пишешь JSON.stringify(a)
2. Копируешь результат
3. вставляешь куда хочешь
var b = [{"id":1,"field":"field1"}]; // вот тебе массив из объектов
4. alert((a[0].id === b[0].id)) // true
5. ???????
6. PROFIT
Но «класс», ессесно, туда уже не переходит
Offline
#6 08.04.11 22:33
Re: [js]экпорт инициализированного массива
генеренный массив сериализуешь в строку:
var str = JSON.stringify(yourArray);
выведи результат промптом:
window.prompt("my array:", str);
копипастишь его, вставляешь как строку в любой другой скрипт, парсишь:
var str = "то, что скопировал из prompt"
var myArrayInANotherScript = JSON.parse(str);
JSON - во всех современных браузерах поддержживается, если нет, в jQuery - как отдельный плагин используется
Offline

