我正在尝试创建一个包含多个字段的数组。
例如:
var person1 = {firstname:"Bob", lastname:"Smith", middlename:"happy"};
我遇到的问题是我想创建 5000 个变量,所以它会变成:
var person1 = {firstname:"Bob", lastname:"Smith", middlename:"happy"};
var person2 = {firstname:"John", lastname:"Jones", middlename:"Long"};
..
var person5000 = {firstname:"Jim", lastname:"Cook", middlename:"Shorty"};
我认为用 5000 行代码来声明变量是很愚蠢的。 所以我希望能够在页面加载时声明变量,然后为每个变量分配值。
我试图使用以下代码来执行此操作,但我猜我做错了什么。 (我正在将一些虚拟数据加载到变量中进行测试)
<!DOCTYPE html>
<html>
<body>
<script>
var person = new Array (firstName:"", lastName:"", middleName:"");
for (var i = 0; i < 5000; ++i) {
person[i] = {firstName:"First"+i, lastName:"Last"+i, middlename:"Middle"+i};
}
alert(person1["firstName"]); // should alert First1
alert(person6["lastname"]); // should alert Last6
</script>
</body>
</html>
我希望稍后在我的代码中使用以下方式设置值: (我很确定这段代码应该可以工作,但无法测试它,因为我无法正确声明变量)
person1[firstname] = "Terry"; // should replace First1 with Terry
然后使用以下方法接收值:
alert(person1[firstname]); // should alert Terry since it was changed
有人知道我的代码有什么问题吗,因为它没有返回值? 我猜我声明的变量是错误的?如果是这样我应该如何声明它们?
最佳答案
您似乎对 Javascript 中数组和对象之间的区别感到困惑。数组具有数字索引,对象具有命名属性。所以初始化
new Array(firstName:"", lastName:"", middleName:"");
没有任何意义。更不用说,它不是有效的 Javascript 语法; 属性:值
对只能在对象文字中使用,不能在参数列表中使用。如果您使用 new Array(...),参数应该是单个数字,即要分配的数组的大小,或者是初始数组元素的列表(没有 property:
前缀。但是创建新数组的首选方法是简单地使用空数组的 []
文字;当您分配给它时,它会根据需要增长。
创建数组时,您不会为每个元素获得单独的变量。您可以使用array[n]
表示法来访问它们。
// Create an empty array
var person = [];
// Fill up the array
for (var i = 0; i < 5000; ++i) {
person[i] = {firstName:"First"+i, lastName:"Last"+i, middlename:"Middle"+i};
}
// Access elements
alert(person[1].firstName);
alert(person[6].middleName);
// Change elements
person[1].firstName = "Terry";
关于具有多个项目的 JavaScript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835173/