将元素添加到记录数组

时间:2017-11-20 18:00:20

标签: javascript arrays records

抱歉,我是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;

很抱歉,如果之前有人询问,但我找不到简单的解决方案!

2 个答案:

答案 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>";