2017-08-30 57 views
0

我在想如何僅使用僅得到 for-in和if-else的某些對象的某些元素。僅使用for-in循環打印對象的某些屬性並且if-else

例如,如果我們有以下對象:

var person, 
property; 

person = { 
    firstName: "John", 
    lastName: "Smith", 
    profession: "Lawyer", 
    age: 31, 
    eyeColor: "blue", 
    hairColor: "blonde" 
} 

如何只打印出的第二和第四財產此對象與入和的if-else?

+0

你想要的第二和第四財產,無論它是什麼性質?或者你想要姓氏和年齡? – Argee

+0

我想要第二個和第四個屬性,不管那個屬性是什麼。我知道例如「person.age」的方式,但我需要用for-in循環和if-else來完成 – Desislava

回答

0

你不需要循環,你可以簡單地訪問對象的值,這樣

person.lastName 
person.age 
0
var person, 
    property, 
    count, 
    wantedProperties; 

person = { 
    firstName: "John", 
    lastName: "Smith", 
    profession: "Lawyer", 
    age: 31, 
    eyeColor: "blue", 
    hairColor: "blonde" 
}; 

count = 1; 
wantedProperties = [2,4]; 

for (prop in person) { 
    if (inArray(count, wantedProperties)) { 
     console.log(prop); 
    } 
    count++; 
} 

function inArray(needle, haystack) { 
    var length = haystack.length; 
    for(var i = 0; i < length; i++) { 
     if(haystack[i] == needle) return true; 
    } 
    return false; 
} 

助手功能inArray是必要的,因爲wantedProperties.indexOf(計數)不工作因爲wantedProperties是一個int數組。

此外,它是醜陋的,它不是零基於。您可能想要重構代碼,但我希望儘可能讀得清楚。

如果要記錄的屬性的值,改變console.log(prop);console.log(person[prop]);