首页 > 解决方案 > 如何将对象数组推入另一个对象数组

问题描述

我有一个对象数组,我试图将其附加到另一个对象数组中。我的对象数组是动态的,所以每次我运行应用程序时,它都会有一个不同的值,我想将它附加到另一个对象数组中。我的对象数组如下所示:

[ { type: 'd',
    name: 'ABC',
    target: undefined,
    sticky: false,
    rights: { user: 'rwx', group: 'rx', other: 'rx' },
    acl: false,
    owner: 'ftp',
    group: 'ftp',
    size: 0,
    date: 2019-07-26T00:00:00.000Z },

  { type: 'd',
    name: 'DEF',
    target: undefined,
    sticky: false,
    rights: { user: 'rwx', group: 'rx', other: 'rx' },
    acl: false,
    owner: 'ftp',
    group: 'ftp',
    size: 0,
    date: 2019-08-02T00:00:00.000Z } ]

我想将完整的对象数组存储到另一个对象中。

ticketNameArr 是我原来的对象数组。我尝试了以下方法将其附加到另一个对象数组中。(已评论的那个)

  Promise.all(ticketDetail).then(function (values) {
                //console.log(values);
                ticketNameArr.push({

                    TicketName: ticketNameIs,
                    InputLocationMessage: values[0].inputLocationMessage,
                    ResultLocationMessage: values[1].resultLocationMessage,
                    TicketStatusInput: values[0].ticketStatusInput,
                    TicketStatusResult: values[1].ticketStatusResult,
                    LogStatus: values[2].logStatus,
                    ReportStatus: values[3].reportStatus,
                    InputTime: values[0].birthtime,
                    InputModifiedTime: values[0].mtime,
                    OutputTime: values[1].birthtime,
                    OutputModifiedTime: values[1].mtime,
                    LogCreateTime: values[2].birthtime,
                    LogModifiedTime: values[2].mtime,
                    FtpTime: values[0].ftpTime,
                    FTPSTATUS: values[0].FTPStatus
                });




                if (ticketNameArr.length == ticketName.length) {

                    console.log("-------------TicketNameArr")
                    console.log(ticketNameArr)
                 ticketXLXSCopy = ticketXLXSCopy.concat(ticketNameArr)
                 console.log("-------------In  Excel")
                 console.log(ticketXLXSCopy)
                 var ws = XLSX.utils.json_to_sheet( ticketXLXSCopy)

                 XLSX.utils.book_append_sheet(wb, ws) // sheetAName is name of Worksheet

                 XLSX.writeFile(wb, 'DailyTicketSatus.xlsx')


                //  var ws = XLSX.utils.json_to_sheet( ticketXLXSCopy)
                    // XLSX.utils.sheet_add_json(ws,ticketXLXSCopy);

                    // XLSX.utils.book_append_sheet(wb, ws) // sheetAName is name of Worksheet

                    // XLSX.writeFile(wb, 'DailyTicketSatus.xlsx')
                    // respond.render('result', { "ticketNameArr": ticketNameArr });
                    respond.render('index', { "ticketNameArr": ticketNameArr });




                }


            });```

The actual result should have all the fields of the original array of objects. While the methods that I tried are just overwriting it
Suppose ticketNameArr for the first time is 
[{name:"Priyanka",
  age:24}]
And after 4 hours say ticticketNameArr  is 
[{name:"Andrew",
  age:24}]
Then the array in which I want to append all the data should be like
[{name:"Priyanka",
  age:24},
{name:"Andrew",
  age:24}
]
The second array of objects should have all the data from the first one.As I mentioned ticketNameArr contains dynamic value and it stored different values after every 3-4 hours.
But every time my xlsx sheet has unappended values.i.e my ticketXLXSCopy is having only overwritten values.

标签: javascriptnode.jsjsonpromise

解决方案


您可以使用 Array Concat 合并两个数组,

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var children = hege.concat(stale);

来源链接:链接


推荐阅读