代码之家  ›  专栏  ›  技术社区  ›  Frankie

Javascript传递的是对象数组而不是数组

  •  1
  • Frankie  · 技术社区  · 14 年前

    我路过一个 Javascript Array() 通过闪存 FlashVars

    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;
    };
    

    不起作用。我需要一个 cities

    谢谢你的帮助。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Ryan Kinal    14 年前

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

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

        2
  •  0
  •   spinon    14 年前

    你可以手工制作数组。像这样:

    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
    

    虽然我认为这一切都是一样的,但闪光可能会看到它不同。

        3
  •  0
  •   Frankie    14 年前

    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个项目,并且没有项目有逗号。

    推荐文章