【问题标题】:How to push an object in a object - javascript如何在对象中推送对象 - javascript
【发布时间】:2021-02-11 01:53:26
【问题描述】:

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

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

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

例如:

正确的数据

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

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

但是当我使用第二个选项时,输入会填充:

数据不正确

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

这是不正确的,因为它没有 [brackets] 开头也没有结尾

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

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

前两条数据是用第一种方式插入的,第三条数据是用第二种方式插入的

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

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

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

let placesArray = [];

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

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

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

 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 中,placeData [object Object] 有这个,csvResult 的结果相同,都是对象

【问题讨论】:

    标签: javascript object add


    【解决方案1】:

    您可以在设置每个值之前flatten 数组

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

    【讨论】:

    • 结果是一样的:(
    • 你的回答帮助我解决了其他问题,谢谢:)
    【解决方案2】:

    似乎csvResult 本身就是一个数组,当您将其字符串化并将其推送到placesArray 时,它看起来不像您想要的结果。

    我会选择这个

    placesArray.push(...csvResult) // push each `csvResult` item into `placesArray`
    document.getElementById('places').value = JSON.stringify(placesArray)
    

    【讨论】:

    • csvResult 是一个对象,因为当我看到控制台时,日志是 [object Object]
    • placeData 也是一个对象,在控制台的日志中我也有这个 [object Object] for placeData
    【解决方案3】:

    已解决:

    当我将数据推送到输入时,我删除了所有 JSON.stringify 并将其添加到每一行

    喜欢这个

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

    在所有行中使用它。

    感谢@hgb123

    为了防止累积 [括号[更多括号]] 我使用了 .flat()

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

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 2021-08-17
      • 2015-05-05
      • 1970-01-01
      相关资源
      最近更新 更多