Создание и добавление элементов в новый массив зависит от условий - PullRequest
3 голосов
/ 19 февраля 2020

My Data Array

data:[
0:{ 
   id:1 ,.....
   competetion:[ 
          0:{
              id: 1....,
              match:[ 
                      0:{id: 1 ......}, 
                      1:{same}
                      .
                      .
                    ]
          1:{same}]},
          2:{same}
          .
          .
        ]
  },
1:{same},
2:{same}
.
.
.
] 

Для data[] я могу создать новый массив (sportarr[]) с элементами нажатия, но я хочу создать для таких же, как competetion[] и match[] в том же массиве sportarr[] Если есть какой-либо другой способ сделать это, пожалуйста, помогите мне ...

Мой код: Здесь я зацикливаюсь:

this.sportsSidebar = response.data;   // My data Array (this.sportsSidebar)
const arrlength = response.data.length; 
for (let i = 0; i < arrlength; i++) {
    this.sportarr.push({       // I declared a new array where i want to push the element
      id: i,
      value: false
    });
}

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

Если вы хотите, чтобы ваш собственный контент основывался на отображении, я предлагаю сначала выполнить итерацию по массиву, затем сопоставить каждое совпадение и соревнование и написать свои собственные логики c внутри карты

 const arrlength = data.length;
      for (let i = 0; i < arrlength; i++) {
        let competition = [];
        competition = data[i].competetion.map( (val, index) => {
          #write your own logic to produce the required outcome
          return {
              id: index,
              value: false
          };
        });
        this.sportarr.push({
          id: i,
          value: false,
          competetion: competition
        });
        console.log('myarrr...', this.sportarr);
1 голос
/ 19 февраля 2020

я ценю Патикрита Саньяла и Фахда Лихидхеба Для муравьёв Вот мое изменение согласно Патикриту Саньялу

  for (let i = 0; i < arrlength; i++) {
        let competition = [];
        competition = response.data[i].competetion.map((val, index) => {
          let match = [];
          match = val.match.map((value, indx) => {
            return {
              id: indx,
              value: false
            };
          });
          return {
            id: index,
            value: false,
            match
          };
        });
        this.sportarr.push({
          id: i,
          value: false,
          competetion: competition
        });
        console.log('myarrr...', this.sportarr);
      }

Теперь я получаю то, что хотел

1 голос
/ 19 февраля 2020

Я не уверен, пытаетесь ли вы создать массив для каждого сохраненного массива (конкуренция и совпадение) или нет, но здесь вы go

this.sportsSidebar = response.data;   // My data Array (this.sportsSidebar)


const competetionList = // Array of competetions
    [].concat.apply([], this.sportsSidebar.map(item => item.competetion));

const matchList = // Array of matchs
    [].concat.apply([], competetionList .map(item => item.match));
}
...