在数组的开头添加一个对象

时间:2018-08-06 16:31:49

标签: javascript

我知道这很简单,但是我不太明白。

function submitNewComment() {
   var noo = 0; //array index
   var userName = document.getElementById('user-name').value; //textbox
   var commentBox = document.getElementById('main-comment').value; //textbox
   var now = new Date();
   mili = now.getTime(); //time in milisecond
   var element = [];
   element.push({
      "no": noo, //array index
      "username": userName,
      "date": mili,
      "body": commentBox,
      "likes": "0",
      "parent": null
   });
console.log(element);
noo++;
console.log(noo);
}

简而言之,我需要添加一个创建变量作为包含对象的数组。 当我运行该函数时,它并没有按照我希望的那样工作。我缺少什么。

第二次运行该函数时,存在问题。 理想情况下,应该创建第二个对象,但第一个对象要更新。因此,在第二次运行结束时以及此后的所有其他运行之后,数组的长度保持为1。

3 个答案:

答案 0 :(得分:2)

您遇到了一些问题。您需要一种在页面加载后获取数据的方法。

  1. 您需要一个按钮或其他一些操作方法。
  2. 您将自己与对象创建混淆了。如果这是用于创建对象的工厂函数,则“ this。[label]”有效,但是如果您只是将表单数据作为对象推入数组,请按照下面的建议进行操作。我所做的一切有意义吗?
  3. 我在这里也没有进行更改,但是创建日期(以毫秒为单位)的最佳方法是Date.now()。继续使用此方法,它将缩短和简化您的代码。
  4. 有什么问题吗?

var element = []; 
var btn = document.getElementById('btn');
btn.addEventListener('click', submitNewComment);
      
function submitNewComment() {
 var userName = document.getElementById('user-name').value
 var commentBox = document.getElementById('main-comment').value
 var now = new Date();
 var milliseconds = now.getTime();
  element.unshift({
    no: "test",
    username: userName,
    date: milliseconds,
    body: commentBox,
    likes: 0,
    parent: null,
  });
console.log(element);
}
 <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>misterhtmlcss</title>
  </head>
  <body>
		<input type="text" name="user-name" id="user-name">
    <input type="text" name="main-comment" id="main-comment">
    <button id="btn">Submit</button>
    <script src="index.js"></script>
  </body>
</html>

更新。我意识到我将此声明留在函数中,这意味着它不会保留您根据您的发言想要的连续提交。

答案 1 :(得分:0)

使用.unshift( object )前置到数组。

let a = [1,2,3,4];
console.log( a );
a.unshift(5);
console.log( a );

答案 2 :(得分:0)

您可以使用Array.prototype.unshift()将元素添加到Array的开头。此方法返回数组的新长度。

var element = [];
element.push({
      "no": "noo", //temp variable
      "username": "userName",
      "date": "mili",
      "body": "commentBox",
      "likes": "0",
      "parent": null
});
element.push({"something": "else"});
var newLen = element.unshift({"object": "one"});
console.log(element);
console.log("New length of Element Array: "+newLen);