我想要一个包含类的某些属性的循环,而不是它的所有属性。我想为类的属性实现一个函数。但即使我不知道如何设置循环的长度与类中的属性数量。例如,这是我的班级:
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.谢谢
答案 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.');
}
});
});