Как я могу вставить массив объекта в другой массив объекта - PullRequest
0 голосов
/ 11 октября 2019

У меня есть массив объектов, которые я пытаюсь добавить в другой массив объектов. Мой массив объектов является динамическим, поэтому каждый раз, когда я запускаю приложение, оно будет иметь другое значение, которое я хочу добавить в другой массив объектов. Мой массив объектов выглядит следующим образом:

[ { 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.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вы можете использовать Array Concat для объединения двух массивов,

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

Ссылка на источник: Ссылка

0 голосов
/ 11 октября 2019

Concat должен работать здесь согласно вашему требованию. var m = [{a:1},{b:2}]; var n = [{c:3},{d:4}]; Для вставки массива объекта в другой объект вы можете попробовать

  • Метод Array Concat (ES5) -> m = m.concat(n)
  • Оператор распространения (ES6) -> m = [...m, ...n]

Попробуйте еще раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...