从你的代码看起来你试图在JavaScript中使用PHP风格的数组。 JavaScript数组不能像PHP数组一样工作。这里的东西,更可能的工作:
var lines = [
{ time: "10:00:00",
user: "User1",
content: "Line1"
},
{ time: "20:00:00",
user: "User2",
content: "Line3"
},
{ time: "30:00:00",
user: "User3",
content: "Line3"
}
];
为了进一步解释利特勒,在JavaScript中创建一个新的数组是这样的:
var myArray = [ 5, 10, 15 ];
的方括号([]
)表示的开始和结束数组和逗号(,
)分隔数组中的每个元素。然后,要访问数组中的元素,我们会做这样的事情:
alert(myArray[0]);
...这将使“5”(第一,或“零”的数组中的元素)。
现在,虽然PHP有关联数组(array('a' => 1, ...)
),但JavaScript中没有“关联数组”。相反,您使用的“对象常量,”像这样:
var myObject = { a: 5, b: 10, c: 15 };
这将创建与属性的新对象(你可以把它们想象成键)命名为“A”,“B”和“C”。有两种方法来访问属性:
alert(myObject['b']);
alert(myObject.b);
在这两种情况下,“10”(我们分配财产“B”的值)将被给予。
现在回到练习中。你会看到在这里我们创建了一个数组([]
)并给出了三个元素,每个元素都是一个对象字面值({}
)。要访问,比方说,第一个元素的“用户”属性,我们这样做:
alert(lines[0].user); // => "User1"
编辑:如果你想命名外数组中的元素,它必须改变一个对象文字,并可以被嵌套像这样:
var lines = {
one: { time: "10:00:00",
user: "User1",
content: "Line1"
},
two: { ...
},
...
};
我命名为清晰起见项目“一”,“二”和“三”,但你可以使用你请的任何值。但是,如果您打算使用数字属性名称(例如0,1,2等),那么您可以使用其他数组而不是对象。与PHP不同,JavaScript不允许数组中存在“间隙”。例如:
var myArr = [1,2];
myArr[5] = 3;
alert(myArr); // => [ 1, 2, undefined, undefined, undefined, 3 ];
啊,我想我可能已经弄到我的PHP和JS混在一起了,我试图同时学习两者。是否有可能命名父数组的键? (只是好奇) – Diesal11 2010-10-21 06:18:56
是的,它是通过做'var line = {“0”:{time:“10:00:00”,...},...}'。然后它成为一个对象,你可以迭代'for(var i in lines)' – 2010-10-21 06:29:38
Diesal11,我已经为我的答案添加了一些说明。关于Salman的评论,对这样的对象属性进行迭代很棘手,原因有二:首先,它可能具有除你想要的属性以外的属性,特别是如果你使用外部库如jQuery;其次,属性不会被排序。如果你想以特定的顺序迭代它们,你应该使用一个数组 - 对象不是一个有序的数据类型。 – 2010-10-21 06:38:29