2016-12-27 214 views
0

我有對象的數組,每個對象看起來像這樣:通過對象的數組循環

var car = { 
    make: "", 
    model: "", 
    price: "" 
} 

我通過每個對象試圖循環,同時想看看是否一個特定的屬性,像這樣定義:

for (i = 0; i <= 5; i++) { 
    if (obj[i].price == ""){ 
     // empty 
    } 
} 

由於某些原因,我不斷收到未定義的值。有沒有不同的/正確的方式來做我想做的事情?

+0

未定義什麼值? – Barmar

+0

陣列有多大? '我<= 5'是一個至少有6個元素的數組。你應該使用'我 Barmar

+0

如果我只是console.log(obj [0] .price),或者在給定範圍內的任何索引,我會得到未定義的。 – codnor

回答

2

我通過每個對象試圖環...,看是否有特定的屬性被定義

這裏是通過對象的數組循環和打印是否一個屬性的示例是爲每個對象定義的。只要小心那些與「定義」不同的真理檢查。你可能想看看hasOwnProperty

const cars = [ 
    { make : 'Toyota', model : 'Prius', price : 15000 }, 
    { make : 'Honda', model : 'Civic', price : 10000 }, 
    { make : 'Ford', model : 'Edsel', price : 0 } 
]; 

cars.forEach((car) => { 
    console.log(`${car.make} ${car.model}:`); 
    if (car.hasOwnProperty('price')) { 
     console.log('Has a price.'); 
    } 
    if (car.price) { 
     console.log('Costs some money.'); 
    } 
}); 

這將打印:

Toyota Prius: 
Has a price. 
Costs some money. 
Honda Civic: 
Has a price. 
Costs some money. 
Ford Edsel: 
Has a price. 

Ford Edsel有價,但不應花費任何金錢。