将对象添加到数组[重复]
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.concat
或 spread
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()
而不是将所有内容都写入文件的全局范围内。
【讨论】:
很好的答案,但是这个问题已经被问过了以上是关于将对象添加到数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试将对象添加到python中的数组中,然后打印数组的内容[重复]