无法访问javascript数组中的项目

时间:2015-04-28 01:37:40

标签: javascript arrays variables undefined

我的数组是:

{
"data":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQ…ACCCCAAAIIIICAvwIEIP760zoCCCCAAAIIIIAAAoES+P992sgQ2E6rdwAAAABJRU5ErkJggg==",
"name":"splash.png",
"imageOriginalWidth":1024,
"imageOriginalHeight":768,
"imageWidth":1969,
"imageHeight":1477,
"width":800,
"height":600,
"left":-585,
"top":-406
}

我有两个变量:

$image_data = $array['data'];
$image_name = $array['name'];

这两个变量都返回undefined

我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:1)

首先,重要的是要注意这不是一个数组,它是一个对象定义。

数组可以定义为:

[
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQ…ACCCCAAAIIIICAvwIEIP760zoCCCCAAAIIIIAAAoES+P992sgQ2E6rdwAAAABJRU5ErkJggg==",
"splash.png",
1024,
768,
1969,
1477,
800,
600,
-585,
-406
]

哪些不是密钥,例如"data":(也可以表示为data:)看来你肯定想要按密钥访问值,所以你真正想要的是:

var data, name, myObject;

// NOTE: We do not "quote" object keys under normal circumstances.
myObject = {
    data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQ…ACCCCAAAIIIICAvwIEIP760zoCCCCAAAIIIIAAAoES+P992sgQ2E6rdwAAAABJRU5ErkJggg==",
    name:"splash.png",
    imageOriginalWidth:1024,
    imageOriginalHeight:768,
    imageWidth:1969,
    imageHeight:1477,
    width:800,
    height:600,
    left:-585,
    top:-406
}

data = myObject["data"]; // We don't usuaully use this 
name = myObject["name"]; // style, although it works.
                         // 
                         // It's generally reserved for 
                         // dynamic access.
                         //
                         // i.e. we make a string to match the keyname.

但是,为了更正,您应该使用点语法来访问对象密钥。

data = myObject.data;
name = myObject.name;

我希望这能为你解决一些问题。

在旁注中请勿使用$array之类的名称。首先不要将$前缀用于普通变量,这不是PHP或BASIC。

其次,当你有一个对象时,你希望它被命名为有用/有意义/难忘的东西。 (命名事情很难!)

当你正确地命名时,其他人可以阅读和理解你的代码,在镇上度过了一个沉重的周末之后,你也可以。

答案 1 :(得分:-3)

您是否尝试使用var关键字声明数组以及您想要存储数据中的内容的变量?

E.g:

var myArray = ["hello",["world"];

通过查看代码,我的印象是您正在尝试制作自定义对象。