抱歉,我是JS的新手。我找到了.push的引用,将一个元素添加到一个数组中,并使用'function'来定义一个对象的结构,但是我想让代码尽可能简单地进行教学!
这是我的代码:
"use strict";
var ListItem = {
field1: "",
field2: 0
};
var DataList = [{
field1: "",
field2: 0
}];
for (var x = 0; x < 3; x++) {
DataList.push(ListItem)
DataList[x].field1 = prompt("item " + x + " Enter f1 data:");
DataList[x].field2 = prompt("item " + x + " Enter f2 data:");
}
for (x = 0; x < 3; x++) {
document.write(x + ": " + DataList[x].field1 + " and " + DataList[x].field2 + "<br/>");
}
这只是我试验和错误的最新版本。
我想创建一个结构化数据类型的数组,然后动态添加元素。我已经尝试了第7行(DataList.push)的几种替代方法,例如DataList [x] = ListItem;
很抱歉,如果之前有人询问,但我找不到简单的解决方案!
答案 0 :(得分:0)
顶部的那两个声明似乎没有做太多,而且您不必在JavaScript中预先声明您的字段。这应该可以解决问题:
"use strict";
var dataList = [];
for (var x=0;x<3;x++) {
dataList.push({}) // make new object
dataList[x].field1 = prompt("item " + x + " Enter f1 data:");
dataList[x].field2 = prompt("item " + x + " Enter f2 data:");
}
for (x=0;x<3;x++) {
document.write(x + ": " + dataList[x].field1 + " and " + dataList[x].field2 + "<br/>");
}
但是,应该提到这是一件非常可怕的事情......
答案 1 :(得分:0)
const dataList = [];
for(var i = 0; i < 3; i++)
dataList[i] = {
field1: prompt("field1 of " + i),
field2: prompt("field2 of " + i)
};
一些注意事项:
1)Javascript是动态的,这很酷。不要试图&#34; init&#34;一个数组,就像使用它一样无限。
2)所有标识符都以小写字母开头,但它们是构造函数。
3)lint你的代码!这意味着尽可能添加空格。
PS:打印清单:
document.body.innerHTML = dataList.map( el => `${el.field1} and ${el.field2}`).join("<br>");
或旧的循环风格:
for(const el of dataList)
document.body.innerHTML += el.field1 + " and " + el.field2 + "<br>";