【问题标题】:how to print object's properties after matching with one of its property与对象的属性之一匹配后如何打印对象的属性
【发布时间】:2021-10-30 17:40:27
【问题描述】:

我想匹配对象的属性值之一,如果它匹配该属性,我需要打印该对象的所有其他属性。 我正在尝试匹配 firstName 属性并打印其剩余部分。

这里是代码

      var friends=new Object();
  friends.steve={
  firstName:"Steve",
  lastName:"smith",
  number:"8861785484",
  address:['rajajinagar','bangalore','560010']
  };

friends.bill={
firstName:"Bill",
lastName:"gates",
number:"9845378136",
address:['shivajinagar','bangalore','560018']
};


var search=function(name){
    for(firstName in friends){
        if(friends[name].firtstName===name){
            console.log(friends[name]);
            return (friends[name]);
            
            }
        
        
        }
    
    }
 search("steve");

输出应该是 "steve" 对象的所有属性,例如.. firstName、lastName、number 和 address

【问题讨论】:

  • steve 应该匹配Steve?或者你可以直接访问friends.steve
  • 朋友[name].firtstName ???
  • 您的问题是什么?你的代码有问题吗?为什么你的代码中有for(firstName in friends){},却没有在任何地方使用firstName

标签: javascript


【解决方案1】:

让朋友成为对象数组,而不是对象对象,然后试试这个:

for(var i = 0;i<friends.length;i++){
    if(friends[i].firstName===name){
        console.log(friends[i]);
        return friends[i];
    }
}

【讨论】:

  • 另外,你有friends[name].firtstName而不是“firstName”,还有“steve”!=“Steve”
【解决方案2】:

我愿意这样做;

var friends = new Object(),
  getDetail = n => friends[n.toLowerCase()];
friends.steve={
  firstName:"Steve",
  lastName:"smith",
  number:"8861785484",
  address:['rajajinagar','bangalore','560010']
  };

friends.bill={
  firstName:"Bill",
  lastName:"gates",
  number:"9845378136",
  address:['shivajinagar','bangalore','560018']
};
console.log(getDetail("Steve"));

可能会这样做;

【讨论】:

    【解决方案3】:

    您可以在属性上使用Array#forEach 进行迭代(使用Object.keys)并检查firstName 是否等于name。此提案查找所有 steve。

    变量k表示对象的属性名,如'steve''bill'

    var friends = { steve: { firstName: "Steve", lastName: "smith", number: "8861785484", address: ['rajajinagar', 'bangalore', '560010'] }, bill: { firstName: "Bill", lastName: "gates", number: "9845378136", address: ['shivajinagar', 'bangalore', '560018'] } },
        search = function (name) {
            Object.keys(friends).forEach(function (k) {
                if (friends[k].firstName.toLowerCase() === name.toLowerCase()) {
                    console.log(friends[k]);
                }
            });
        };
    
    search("steve");

    带有for ... in 循环的提案。

    var friends = { steve: { firstName: "Steve", lastName: "smith", number: "8861785484", address: ['rajajinagar', 'bangalore', '560010'] }, bill: { firstName: "Bill", lastName: "gates", number: "9845378136", address: ['shivajinagar', 'bangalore', '560018'] } },
        search = function (name) {
            for (k in friends) {
                if (friends[k].firstName.toLowerCase() === name.toLowerCase()) {
                    console.log(friends[k]);
                }
            };
        };
    
    search("steve");

    【讨论】:

    • 我只能在循环中使用
    • 因为我是 javascript 的新手..so..这里的“K”是什么?是否指向对象属性?
    • @Nag,请参阅上面的附加信息。变量 k 在这两种情况下都包含属性名称 steve,朋友对象的账单。
    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 2022-09-23
    • 2011-03-03
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2022-11-21
    相关资源
    最近更新 更多