如何在对象中推送对象-javascript

如何在对象中推送对象-javascript,javascript,object,add,Javascript,Object,Add,我有两种方法在表单中填充相同的隐藏输入 使用导入CSV按钮 使用其他输入添加数据 当我使用第一个选项时,隐藏的输入将填充以下内容 例如: 正确的数据 [{"url":"http://www.restaurant.com","businessTypeId":"1"},{"url":"http://www.hotel.com","businessTypeId":

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

  • 使用导入CSV按钮
  • 使用其他输入添加数据
  • 当我使用第一个选项时,隐藏的输入将填充以下内容

    例如:

    正确的数据

    [{"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"}
    
    这是不正确的,因为它的开头和结尾都没有[括号]

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

    [{"url":"http://www.restaurant.com","businessTypeId":"1"}, 
    {"url":"http://www.hotel.com","businessTypeId":"2"}], 
    {"url":"http://www.google.com","businessTypeId":"3"}
    
    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"}]
    
    使用第一种方式插入前两个数据,使用第二种方式插入第三个数据

    所有数据应在这些括号内[]

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

    在所有代码的开头,变量如下开始

    [{"url":"http://www.restaurant.com","businessTypeId":"1"}, 
    {"url":"http://www.hotel.com","businessTypeId":"2"}], 
    {"url":"http://www.google.com","businessTypeId":"3"}
    
    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"}]
    
    在第一种方法之后,使用该方法插入数据

    [{"url":"http://www.restaurant.com","businessTypeId":"1"}, 
    {"url":"http://www.hotel.com","businessTypeId":"2"}], 
    {"url":"http://www.google.com","businessTypeId":"3"}
    
    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"}]
    
    在第二种方法之后,使用该方法插入数据

    [{"url":"http://www.restaurant.com","businessTypeId":"1"}, 
    {"url":"http://www.hotel.com","businessTypeId":"2"}], 
    {"url":"http://www.google.com","businessTypeId":"3"}
    
    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"}]
    
    注意:如果我使用第一种方法两次,括号会重复,如下所示

    [{"url":"http://www.restaurant.com","businessTypeId":"1"}, 
    {"url":"http://www.hotel.com","businessTypeId":"2"}], 
    {"url":"http://www.google.com","businessTypeId":"3"}
    
    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中,我为
    placeData
    [object object]
    设置了这个,对于
    csvResult
    的结果是相同的,两者都是object

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

    我会选择这个

    placesArray.push(…csvResult)//将每个'csvResult'项推入'placesArray`
    document.getElementById('places')。value=JSON.stringify(placesArray)
    
    您可以在设置每个值之前对数组进行十次排序

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

    已解决:

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

    像这样

    document.getElementById('places').value = JSON.stringify(placesArray);
    
    使用此选项时,在所有行中

    感谢@hgb123

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


    csvResult是一个对象,因为当我看到控制台时,日志是[object object]placeData也是一个对象,在控制台的日志中,我有这个[object object]用于placeData。结果是一样的:(您的回答帮助我解决了其他问题,谢谢:)