Javascript传递的是一个对象数组,而不是数组数组

Javascript传递的是一个对象数组,而不是数组数组,javascript,flash,actionscript-3,arrays,flashvars,Javascript,Flash,Actionscript 3,Arrays,Flashvars,我正在通过FlashVars向Flash传递一个Javascript数组()。你们能告诉我我做错了什么吗 javascript代码 // array with the user defined cities var usercities = new Array( {'nome':"London", 'lat':51.5002, 'long':-0.1262 }, {'nome':"NYC", 'lat':51.5002, 'long':-0.1262 } ); flashv

我正在通过
FlashVars
向Flash传递一个
Javascript数组()。你们能告诉我我做错了什么吗

javascript代码

// array with the user defined cities
var usercities = new Array( 
    {'nome':"London", 'lat':51.5002, 'long':-0.1262 },
    {'nome':"NYC", 'lat':51.5002, 'long':-0.1262 } 
);

flashvars.newcities = usercities;
// this array is pre-populated so if the users doesn't enter data this is shown
var cities:Array = new Array(
    { nome:"London", lat:51.5002, long:-0.1262 },
    { nome:"NYC", lat:40.7144, long:-74.0060 }
);

// gets FlashVars
var newcities:Object = LoaderInfo(this.root.loaderInfo).parameters.newcities;
if(newcities != null) {
    cities = newcities;
};
闪存代码

// array with the user defined cities
var usercities = new Array( 
    {'nome':"London", 'lat':51.5002, 'long':-0.1262 },
    {'nome':"NYC", 'lat':51.5002, 'long':-0.1262 } 
);

flashvars.newcities = usercities;
// this array is pre-populated so if the users doesn't enter data this is shown
var cities:Array = new Array(
    { nome:"London", lat:51.5002, long:-0.1262 },
    { nome:"NYC", lat:40.7144, long:-74.0060 }
);

// gets FlashVars
var newcities:Object = LoaderInfo(this.root.loaderInfo).parameters.newcities;
if(newcities != null) {
    cities = newcities;
};
不起作用。我需要将
cities
数组精确地放在闪存端。在Javascript端,所有代码都可以更改


谢谢您的帮助。

您可以手动将它们制作成阵列。大概是这样的:

var usercities = [];
usercities[0] = [];
usercities[0]["nome"] = "London";
usercities[0]["lat"] = 51.5002
usercities[0]["long"] = -0.1262
usercities[1] = [];
usercities[1]["nome"] = "NYC";
usercities[1]["lat"] = 51.5002
usercities[1]["long"] = -0.1262

虽然我认为这一切都是一样的,但flash可能会有不同的看法。

好吧,你可以手动将它们制作成阵列。大概是这样的:

var usercities = [];
usercities[0] = [];
usercities[0]["nome"] = "London";
usercities[0]["lat"] = 51.5002
usercities[0]["long"] = -0.1262
usercities[1] = [];
usercities[1]["nome"] = "NYC";
usercities[1]["lat"] = 51.5002
usercities[1]["long"] = -0.1262

虽然我认为这一切都是一样的,但flash可能会有不同的看法。

JavaScript不像其他语言那样具有关联数组。为了获得命名索引,必须使用对象。分配有命名索引的值的数组将转换为对象


为此,您可能需要更改闪存代码。正如meder所说,序列化数组是最好的选择。我建议在JavaScript中使用JSON编码,在Flash中使用解码。

JavaScript不像其他语言那样具有关联数组。为了获得命名索引,必须使用对象。分配有命名索引的值的数组将转换为对象


为此,您可能需要更改闪存代码。正如meder所说,序列化数组是最好的选择。我建议在JavaScript中使用JSON编码,在Flash中使用解码。

最后传递的值如下:

javascript

var cities = new Array( 
    Array("London", 51.5002, -0.1262),
    Array("NYC", 40.7144, -74.0060),
);
那一闪变成了一个纯字符串

"London",51.5002,-0.1262,"NYC",40.7144,-74.0060
然后我将字符串分解并转换为数组。虽然有点脏,但最终还是管用的。只要数组每行始终有3个项目,并且没有项目有逗号


希望这可能会对某人有所帮助。

最终传递的值如下:

javascript

var cities = new Array( 
    Array("London", 51.5002, -0.1262),
    Array("NYC", 40.7144, -74.0060),
);
那一闪变成了一个纯字符串

"London",51.5002,-0.1262,"NYC",40.7144,-74.0060
然后我将字符串分解并转换为数组。虽然有点脏,但最终还是管用的。只要数组每行始终有3个项目,并且没有项目有逗号


希望这可能会对某些人有所帮助。

那么您希望usercities作为数组传递吗?我认为您必须以某种方式序列化您的
usercities
@spinon,对,我希望它作为数组传递。。。但它是作为一个对象数组传递的…所以你想让usercities作为数组数组传递?我想你必须以某种方式序列化你的
usercities
@spinon,正确,我希望它作为数组传递。。。但它作为一个对象数组传递…实际上这是两个空数组。有趣的还在努力,那太糟糕了。那么为什么不使用一组对象呢。。。只是走了一条简单的路。更改了所有闪存代码,以按位置[0]、[1]、[2]引用项,并将数组作为逗号分隔的字符串传递。在Flash中,该字符串被分解并转换为数组。不漂亮但很管用。谢谢你的帮助。是的,我想这是最简单的方法。奇怪的是,你不能让它以另一种方式工作,但很高兴有东西能为你工作。有趣的还在努力,那太糟糕了。那么为什么不使用一组对象呢。。。只是走了一条简单的路。更改了所有闪存代码,以按位置[0]、[1]、[2]引用项,并将数组作为逗号分隔的字符串传递。在Flash中,该字符串被分解并转换为数组。不漂亮但很管用。谢谢你的帮助。是的,我想这是最简单的方法。奇怪的是,你不能以另一种方式让它工作,但很高兴有些东西能为你工作。我可能不得不按照你说的序列化它。到目前为止,我一直在尝试解析它,但没有任何结果……我可能必须按照您所说的那样序列化它。到目前为止,我一直在尝试解析它,但没有任何结果。。。