Получить три значения из набора объектов - PullRequest
0 голосов
/ 07 сентября 2018

после попытки нескольких вещей, я пришел к выводу, что, возможно, я просто не смотрю на это правильно. Поэтому я решил спросить здесь.

Я пытаюсь получить _id пользователя, и внутри этого объекта есть также вкладка visits, которая мне нужна postId и visitCount.

Это мои попытки:

this.analyticsService.getClicks();
    this.userClicksSub = this.analyticsService
      .getUserAnalyticsClicks()
      .subscribe((userClicks: Clicks[]) => {
        this.userClicks = userClicks;
        console.log(this.userClicks);
        // const visits = this.userClicks['visits'];
        // console.log(visits);
      //   for (const item of this.userClicks) {
      //      const visits = item.visitCount;
      //      const visits = item.visitCount['visits'];
      //      const visits = item['visits'];
      //      const postId = visits[i]['postId'];
      //     console.log(item['visitCount']);
      //  }
        // this.userId.push(this.userClicks);
        // console.log(this.userId);
        // console.log(this.userId.user[1]);
        // console.log(this.userClicks.user.user); //
        // console.log('test', this.userClicks[2]);
}); 

Это console.log(this.userClicks); дает мне это:

enter image description here

Борьба за доступ к значениям вкладок посещений пользователей.

У меня есть эта таблица, которая должна быть заполнена результатами:

<th>{{ userclick._id }}</th>

<th>{{ userclick.postId }}</th>

<th>{{ userclick.visitCount }}</th>

Он будет перебирать результаты и отображать их соответствующим образом.

Ответы [ 4 ]

0 голосов
/ 07 сентября 2018

Попробуйте следующее: var infos = userClicks.map(user => user.visits.map(({_id, postId}) => ({id: _id, postId}))).reduce((result, currentValue) => result.concat(currentValue), []);

infos.forEach (info => console.log (<th>${info.id}</th><th>${info.postId}</th><th>${info.visitCount}</th>))

0 голосов
/ 07 сентября 2018

В вашем цикле for вы можете использовать следующее для решения вашей проблемы:

item.user.visit[whatever index you want]._id
0 голосов
/ 07 сентября 2018

Полагаю, вам просто нужно чувствовать себя немного более комфортно при погружении через вложенные значения!

Есть две вещи, которые могут вкладывать дополнительные значения: Array и Object. При погружении в Array вы предоставляете числовой индекс: arr[12] приведет к 13-му значению в Array (из-за индексации на основе 0). При погружении в Object вы часто можете использовать точечную нотацию: obj.innerProperty дает вам obj «innerProperty».

Корневой объект, с которым вы имеете дело, this.userClicks, это Array. Поэтому, если вы хотите получить доступ к внутреннему элементу, вам нужно указать числовой индекс; например this.userClicks[2]. Я вижу, что вы пытались сделать this.userClicks['visits'], что не сработает, потому что this.userClicks не имеет свойства "посещения"; intead каждый элемент в this.userClicks имеет свойство "посещения", которое вы ищете.

Если вы хотите применить одну и ту же операцию ко всем элементам в this.userClicks, вам нужно использовать какой-то цикл.

например. простой цикл for:

for (let i = 0; i < this.userClicks.length; i++) {
  let currentClick = this.userClicks[i];
  // do something with `currentClick`
}

например. декларативный стиль forEach:

this.userClicks.forEach(currentClick => {
  // do something with `currentClick`
});
0 голосов
/ 07 сентября 2018

Вам нужно выполнить итерацию дважды, так как есть вложенный массив

this.userClicks.forEach(function(item){
 item.user.visit.forEach(function(elem){
  console.log(elem.visitCount)
 })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...