在if语句中使用对象属性时,为什么未定义对象属性



我正试图通过for循环在数组中搜索

let matrix = [];
for(let i=0; i<this.row; i++){
for(let j=0; j<this.column; j++){
if(this.grid[i][j].name != ""){
matrix.push(this.grid[i][j].name);
console.log(matrix);
}
}

但它不起作用。我得到的错误是this.grid[i][j].nameundefined,尽管这将完美工作:

let matrix = [];
for(let i=0; i<this.row; i++){
for(let j=0; j<this.column; j++){
if(this.grid[i][j]){
matrix.push(this.grid[i][j].name);
console.log(matrix);
}
}

我问是否有对象,如果有,那么将name属性推送到变量matrix中,奇怪的是,这里属性this.grid[i][j].name定义正确,但为什么没有使用if语句中的属性来定义?

请尝试这种方法

let matrix = [];
for(let i=0; i<this.row; i++){
for(let j=0; j<this.column; j++){
if(this.grid[i][j] && this.grid[i][j].name){
matrix.push(this.grid[i][j].name);
console.log(matrix);
}
}

通过这种方式,您可以检查this.grid[i][j]是否存在,然后只检查this.grid[i][j].name

最新更新