具有多个项目的 JavaScript 数组

标签 javascript arrays

我正在尝试创建一个包含多个字段的数组。

例如:

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/

相关文章:

python - 如何切片列数未知的numpy数组?

javascript - AngularJS ngClass 表达式和数组组合

javascript - 在没有事件处理程序或 Prop 的情况下调用 react 组件中的函数

javascript - 从数组中获取对象?

javascript - 如何为对象中的所有键和值添加属性?

arrays - 在 Swift 3 中将结构附加到结构数组

Javascript - 根据字符拆分字符串但将其保留在结果数组中

javascript - 在 JavaScript 函数中加载图像

javascript - jquery 将动态 innerhtml 存储到可用的 jquery 变量中

如果表单中的元素少于一个,Javascript 将返回 'undefined'。