繁体   English   中英

循环遍历 Typescript 中的数组

[英]Loop through an Array in Typescript

Angular 连接到 node.js 从 mongodb 获取数据。 这工作正常,但现在我需要 map typescript 组件中的变量到后端 node.js。

在浏览器控制台中,数据结构如下所示: Browser Console

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”,typescript 中的正确语法是什么?

我试过(下面的代码)并得到一个错误:

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)
        })
      }
}

请帮助我:)解决我的问题。 谢谢伊甸园

您可以简单地循环res然后list来实现这一点,不需要任何 for 循环。

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)

循环的结束条件部分缺失:

for (let i = 0; i < res.length; i++)

不要忘记 forEach 也可以有一个迭代器:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM