首页 > 解决方案 > 如何在对象中推送对象 - javascript

问题描述

我有两种方法可以在表单中填充相同的隐藏输入

  1. 使用导入 CSV 按钮
  2. 使用其他输入添加数据

当我使用第一个选项时,隐藏的输入充满了这个

例如:

正确的数据

[{"url":"http://www.restaurant.com","businessTypeId":"1"},{"url":"http://www.hotel.com","businessTypeId":"2"}]

如果我存储此数据,则可以正常工作

但是当我使用第二个选项时,输入充满了这个:

不正确的数据

{"url":"http://www.google.com","businessTypeId":"3"}

这是不正确的,因为它的开头和结尾都没有[括号]

另一个问题是当我插入数据并填充隐藏的输入(使用第一种方式)然后我尝试使用第二种方式添加更多数据时,我得到了这个

[{"url":"http://www.restaurant.com","businessTypeId":"1"}, 
{"url":"http://www.hotel.com","businessTypeId":"2"}], 
{"url":"http://www.google.com","businessTypeId":"3"}

使用第一种方式插入前 2 个数据,使用第 2 种方式插入第三个数据

所有数据都应在括号内 []

如何“打开”括号以推送新数据并“关闭”它们?

在所有代码的开头,变量是这样开始的

let placesArray = [];

在第一种方法之后,使用此方法插入数据

placesArray.push(JSON.stringify(csvResult));
document.getElementById('places').value = placesArray;

他们,在第二种方法之后,使用这个插入数据

 placesArray.push(JSON.stringify(placeData));
 console.log('placeData datatable ' + placeData);
 document.getElementById('places').value = placesArray;

注意:如果我使用第一种方法两次,括号是重复的,像这样

[{"url":"http://www.restaurant.com","businessTypeId":"1"}
{"url":"http://www.hotel.com","businessTypeId":"2"}],
[{"url":"http://www.beauty-shop.com","businessTypeId":"3"},
{"url":"http://www.dentist.com","businessTypeId":"5"}]

我绝对需要“打开”对象,以便我可以插入新数据而不是通过这个,我怎么能这样做?

在 console.log 中,我有这个 for placeData [object Object],相同的结果 for csvResult,两者都是对象

标签: javascriptobjectadd

解决方案


您可以在设置每个值之前将数组变平十

placesArray = placesArray.flat()
document.getElementById('places').value = placesArray;

推荐阅读