Angular2: перебрать недавно переданный массив и нажать от другого - PullRequest
0 голосов
/ 26 июня 2018

У меня есть объект массива

MainArray = {"Data":
             [{"Group": "GroupA"},{"Group": "GroupB"}]
}

Затем я перебираю массив и создаю новый

let _newArray : any[] = [];
MainArray.Data.forEach(item => {
      _newArray.push({
              groupname : item.Group,
              columns: ["column1","column2","column3"]
            });
        //loop through _newArray.columns
        });

тогда мне нужно перебрать столбцы нового массива внутри цикла Main Array

и вытолкнуть массив из другого ..

SecondArray = [{group: "GroupA", value: "firstfield", count: 14 },{group: "GroupA", field: "secondfield", count:23 },{group: "GroupB", field: "randomfield", count:1 }]

поэтому вывод должен быть

_newArray = [{
         groupname: "GroupA",
         columns: ["column1","column2","column3"]
         col1: [{"firstfield":14, "secondfield": 23 }]
         col2: "",
         col3: ""
         },{GroupB...}]

что я пробовал:

 Object.keys( _newArray[0].columns).forEach( function(value, key) {
                console.log(this._SecondArray[item.Group])
                // push  'col + index: [Second Array]'
                });

1 Ответ

0 голосов
/ 27 июня 2018

В вашем SecondArray первый объект имеет ключ 'value'. Я принял это как "поле"

let MainArray = {
  "Data":
  [{ "Group": "GroupA" }, { "Group": "GroupB" }]
}

// First push
let _newArray = [];
MainArray.Data.forEach(item => {
  _newArray.push({
    'groupname': item.Group,
    'columns': ["column1", "column2", "column3"]
  })
})


let SecondArray = [{ group: "GroupA", field: "firstfield", count: 14 }, { group: "GroupA", field: "secondfield", count: 23 }, { group: "GroupB", field: "randomfield", count: 1 }];

// Second push
_newArray.forEach(item => {
  console.log(item)
  let i = 1;
  item.columns.forEach(cols => {
    console.log(cols)
    if (i == 1) {
      item["col" + i] = {}
      SecondArray.forEach(subItem => {
        console.log(subItem)
        if (subItem.group == item.groupname) {
          item["col" + i][subItem.field] = subItem.count
        }
      })
      i++
    } else {
      item["col" + i++] = ""
    }
  })
})



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