首页 > 解决方案 > json 中的 .push() 导致替换而不是将数组添加到我的 json 变量

问题描述

我正在尝试将不同的元素添加到 json 数组中,每个元素都由许多用户输入的变量组成

 var Items = {
                id: `${ID}`,
                datestart: `${datestart}`,
                dateend: `${dateend}`,
                timestart: `${timestart}`,
                timeend: `${timeend}`,
                recurrences: `${userchoice}`,
                daily: `${daily}`
            };

此元素存储在由定义的数组中

 var array = [];

但是当我尝试在数组中添加元素时,它只添加一次,然后更新用户插入的任何不同数据

 array.push(Items);

当我使用 .push() 函数时,它只会继续用数组中已经存在的元素替换新元素。我很确定有一个简单的解决方案,但我无法看透它。

编辑:我使用的整个代码如下:

var array=[];
var ID=document.getElementById("id");
// the same for the rest of the variables
var Items = {
                id: `${ID}`,
                datestart: `${datestart}`,
                dateend: `${dateend}`,
                timestart: `${timestart}`,
                timeend: `${timeend}`,
                recurrences: `${userchoice}`,
                daily: `${daily}`
            };
// then i am directly adding the items to the array
 array.push(Items);
// then i am displaying the result
  var jsonstring = JSON.stringify(array);
  console.log(jsonstring);

标签: javascriptjqueryarraysjsondatabase

解决方案


谢谢你们帮助我,正如 ray hatfield 所说,我在与 .push 函数相同的 js 文件中声明了我的数组。

这样做的正确方法是:

主.js

var array=[];

添加到json.js

var ID=document.getElementById("id");
// the same for the rest of the variables
var Items = {
                id: `${ID}`,
                datestart: `${datestart}`,
                dateend: `${dateend}`,
                timestart: `${timestart}`,
                timeend: `${timeend}`,
                recurrences: `${userchoice}`,
                daily: `${daily}`
            };
// then i am directly adding the items to the array
 array.push(Items);
// then i am displaying the result
  var jsonstring = JSON.stringify(array);
  console.log(jsonstring);

推荐阅读