将对象添加到数组[重复]

Posted

技术标签:

【中文标题】将对象添加到数组[重复]【英文标题】:add objects to array [duplicate] 【发布时间】:2022-01-05 16:10:42 【问题描述】:

我想在没有方括号的现有数组中添加单词 使用我的代码,我得到以下输出: [["1","2","3"],["4","5","6"]]

但我希望将其添加到同一个括号中,如下所示:["1", "2", "3","4","5","6"]

这是我的代码:

const fs = require('fs');
var data = fs.readFileSync('data.json');
var myObject = JSON.parse(data);
console.log(myObject);
var newData = [
  '4',
  '5',
  '6'
];

myObject.push(newData);
var newData1 = JSON.stringify(myObject);
console.log(newData1);

fs.writeFile('data.json', newData1, err => 
  if (err) throw err;
  else console.log("New data added");
); 

【问题讨论】:

使用展开语法?还是对象赋值? developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 你可以用myObject.push(newData)代替myObject.push(...newData)。或myObject = myObject.concat(newData) 像这样使用push是不可读的,如果你在旧的js沙箱中,你应该更喜欢.concat,否则在最近的javascript版本中使用spread operator,请参阅下面的答案 @OUD 我认为这不是一个好的答案,因为它不会使代码易于阅读,因为它对大多数 JavaScript 开发人员来说并不自然。如果你不介意,那就去吧。否则他只是添加了.concat 这是更可接受的答案 【参考方案1】:

你想使用.concat 来连接你的数组。

Array.prototype.push 只会将一个条目添加到您的数组中,您可以使用 Array.prototype.concatspread array operator ...[] 将数组中的内容传播到另一个数组中,例如:

const  readFileSync, writeFileSync  = require('fs');

async function process() 
  try 
    const dataAsString = readFileSync('data.json', 'utf8');
    const initialData = JSON.parse(dataAsString);
    console.log('initialData', initialData);
    const initialData = [
      '4',
      '5',
      '6'
    ];

    const finalData = JSON.stringify([...myObject, ...initialData));
    console.log('finalData', finalData);
    writeFileSync('data.json', finalData, 'utf8'); 
   catch (error) 
    console.error(error);
    // handle error management here
  



process()

我已添加:

writeFileSync因为你使用的是同步方式来读取,我猜你这里不需要异步。

读取并保存到文件时将encoding 字符集设置为utf8

async/await 这样您就可以维护同步代码,为此我必须创建一个 async function() 而不是将所有内容都写入文件的全局范围内。

【讨论】:

很好的答案,但是这个问题已经被问过了

以上是关于将对象添加到数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript将数组作为值添加到对象[重复]

我正在尝试将对象添加到python中的数组中,然后打印数组的内容[重复]

Vue.js 是不是具有将持久对象的副本添加到重复数组的内置方法

为啥将项目添加到空白数组中会重复显示项目?

React Js,将新对象添加到数组中[重复]

如果不存在,Mongoose 将多个对象添加到数组