如何在循环中使用对象的属性?

时间:2018-01-11 16:06:39

标签: angular loops

我想要一个包含类的某些属性的循环,而不是它的所有属性。我想为类的属性实现一个函数。但即使我不知道如何设置循环的长度与类中的属性数量。例如,这是我的班级:

class Address{
id: number,
street: string,
state: string,
}

我希望用这个类的对象的长度创建一个循环,并在Address类的这个对象的每个属性上做一些事情,如下所示:

for (let i; i< /*length of address object*/; i++) {
if (/*each property of address */) {
// do sth
 }
}

我正在使用Angular 4.谢谢

4 个答案:

答案 0 :(得分:1)

<强> LOOP OVER ARRAY OF OBJECTS

我假设您正在引用对象数组,您可以这样做

for(let result of this.address){
    console.log(result.street);
    ....
    etc
}

LOOP OVER OBJECT KEYS :

如果是对象,您可以使用 Object.keys 获取密钥,然后循环遍历它们。

objectKeys = Object.keys(this.address);

for (let result of this.objectKeys) {
    console.log('key', result);
    console.log('value', this.address[result]);
} 

答案 1 :(得分:1)

创建一个新的地址类实例,并使用

获取对象属性
Object.keys

答案 2 :(得分:0)

由于您已将此标记为Angular问题,因此我假设您要在Angular模板中打印此问题。否则它根本不是Angular。

您无法遍历对象,因为没有指定循环应该发生的顺序。您必须将对象转换为数组。一种方法是使用Object.keys方法。

this.keys = Object.keys(object)

然后在模板中循环显示:

<ul>
  <li *ngFor="let key of keys">{{ key }} {{ object[key] }}</li>
</ul>

答案 3 :(得分:0)

我假设您要访问每个地址对象的属性。假设:地址:地址[];

您需要先使用underscore.js库并将其导入您的班级。

import * as _ from 'underscore'

现在你可以使用&#39; _&#39;在您的代码中运行如下:

do(addresses=> {
    _.each(addresses, (address: Address) => {
          if (address.state === "CA") {
            console.log('This is California.');
          }
     });
  });