【问题标题】:Printing only some properties of an object using for-in loop and if-else使用 for-in 循环和 if-else 仅打印对象的某些属性
【发布时间】:2017-08-31 15:58:23
【问题描述】:

我想知道如何使用 only for-in 和 if-else 仅获取对象的某些元素。

例如,如果我们有以下对象:

var person,
property;

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

如何使用 for-in 和 if-else 仅打印该对象的第二个和第四个属性?

【问题讨论】:

  • 你想要第二个和第四个属性,不管它是什么属性?还是你想要姓氏和年龄?
  • 我想要第二个和第四个属性,不管那个属性是什么。例如,我知道“person.age”方式,但我需要使用 for-in 循环和 if-else

标签: javascript object if-statement for-in-loop


【解决方案1】:

你不需要循环,你可以像这样简单地访问对象的值

person.lastName
person.age

【讨论】:

    【解决方案2】:
    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(count) 不能正常工作,因为 WantProperties 是一个整数数组。

    而且,它不是从零开始的,这很丑陋。您可能想重构代码,但我希望尽可能地可读。

    如果要记录属性的值,请将console.log(prop); 更改为console.log(person[prop]);

    【讨论】:

      猜你喜欢
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2021-11-13
      相关资源
      最近更新 更多