L oop через массив в машинописном тексте - PullRequest
0 голосов
/ 04 августа 2020

Angular подключен к node.js, который извлекает данные из mongodb. Это работает нормально, но теперь мне нужно сопоставить переменные в компоненте машинописного текста с серверной частью node.js.

в консоли браузера структура данных выглядит так: Консоль браузера

The code within the component.ts looks like this:
ngOnInit() {
    this.contactService.getContacts()
      .subscribe(res => {
        console.log(res);

          let temp_max = res[0]['list'].map(res => res.main.temp_max)
          let temp_min = res[0]['list'].map(res => res.main.temp_min)
          let alldates = res[0]['list'].map(res => res.dt)

          let deviceData = []
          alldates.forEach((res) => {
            let jsdate = new Date(res * 1000)
            deviceData.push(jsdate.toLocaleTimeString('en', { year: 'numeric', month: 'short', day: 'numeric' }))
          })
          console.log(deviceData)
        })
  
}

теперь я написал let temp_max = res[0]['list'].map(res => res.main.temp_max), но как я могу заменить [0] на «i», какой правильный синтаксис в машинописном тексте?

Я пробовал (код ниже) и получил сообщение об ошибке :

ngOnInit() {
    this.contactService.getContacts()
      .subscribe(res => {
        console.log(res);
        for (var i = 0; res.length; i++) {
          let temp_max = res[i]['list'].map(res => res.main.temp_max)
          let temp_min = res[i]['list'].map(res => res.main.temp_min)
          let alldates = res[i]['list'].map(res => res.dt)

          let deviceData = []
          alldates.forEach((res) => {
            let jsdate = new Date(res * 1000)
            deviceData.push(jsdate.toLocaleTimeString('en', { year: 'numeric', month: 'short', day: 'numeric' }))
          })
          console.log(deviceData)
        })
      }
}

Помогите пожалуйста :) с моими проблемами. Спасибо Иден

Ответы [ 3 ]

0 голосов
/ 04 августа 2020

Не забывайте, что forEach также может иметь итератор:

res.forEach((resItem, i) => {

https://www.w3schools.com/jsref/jsref_foreach.asp

0 голосов
/ 04 августа 2020

Вы можете просто l oop res, а затем list, чтобы достичь этого, не нужно ничего для l oop.

const temp_max = res.map((r) => r.list.map((list) => list.main.temp_max));
const temp_min= res.map((r) => r.list.map((list) => list.main.temp_min));
const alldates = res.map((r) => r.list.map((list) => list.dt));

console.log(temp_max, temp_min, alldates)
0 голосов
/ 04 августа 2020

Конечное условие вашего l oop частично отсутствует:

for (let i = 0; i < res.length; i++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...