2017-08-30 58 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]);