打字稿:打字稿循环显示最后一个对象后未定义
public Update() {
this.Data = this.Items;
console.log(this.Data);
for (let value of this.Data) {
console.log(value);
}
}
[Object, Object, Object]
Object
CandidateName:"B"
ControlId:0
CreatedBy:null
CreationDateTime:null
ExamId1:2000
ExamName:" Safety"
Id:1292353
它显示长度:3
当我在这个对象要循环,它是抛出错误长度是不确定的,请帮我。
的for in
或for of
声明应避免用于遍历数组。它有两个“缺点”:
1)的次序并不保证
2)也继承的属性将被列出/枚举,如果枚举:定义所述属性时假没有被指定。
如果例如你添加一个属性到你的原型,这个循环也会遍历那个。
Array.prototype.test = "test";
var a = ['a', 'b'];
for (let i in a) {
console.log(a[i]);
}
for (let i of a) {
console.log(i);
}
你应该看到你的财产打印。
如果你改变你的循环到连续的循环:
for (let i = 0; i < this.Data.length; i++ value of this.Data) {
console.log(this.Data[i]);
}
或:
this.Data.forEach((el) => {
console.log(el);
});
你可能看不到您的问题。
如果要遍历对象,则必须使用Object.keys(your_obj)
。因为对象没有长度属性。您只能使用for of
来遍历'Array'
或'String'
类型。您可以使用Object.keys(your_obj).length
为连续for循环for(var i=0; i<Object.keys(your_obj).length; i++)
public Update() {
this.Data = this.Items;
console.log(this.Data);
for (let obj of this.Data) {
console.log(obj);
//iterate over object here
for(let property of Object.keys(obj)){
// write your logic for specific object
}
}
}
扩展到quirimmo的回答,连续for循环,使用此
this.Data.forEach(function(obj){
console.log(obj);
//iterate over object here
for(var i=0; i<Object.keys(obj).length; i++){
// write your logic for specific object
}
})
但我越来越无法读取属性forEach是未定义的。 – Pramod
这意味着'this.Data'是未定义的。所以,问题在别的地方。什么是“this.Items”? –
你想干什么? –
你想迭代数组中的对象还是单个对象? –
@Mr_Perfect迭代该数组中的每个对象 – Pramod