迭代对象属性/键

时间:2017-02-23 09:03:06

标签: javascript object for-loop iteration

我刚刚开始学习编码,我遇到了一个我无法理解的问题。

“我们将添加的第二个函数将被称为搜索,它将以名字作为参数。它将尝试将它收到的第一个名称与我们朋友联系人列表中的任何名字相匹配。它找到一个匹配项,它会将我们朋友的联系信息(firstName,lastName,number,address)记录到控制台。“

变量定义如下:

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

答案如下:

'oojs-ui-core'

有人可以更好地解释var“key”是如何产生的吗?为什么我不能只输入friends.firstName === name,console.log(friends.name),返回friends.name ??

如果有人能解释,谢谢你,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

来自OP的评论:

var friends = {}; 

friends.bill = { 
  firstName: "Bill", 
  lastName: "gates", 
  number: "1234567", 
  address: ['bishan','starbucks', 'centertable'] 
}; 

friends.steve = { 
  firstName: "Steve", 
  lastName: "jobs", 
  number: "987654", 
  address: ['orchird', 'ikoma', 'ga'] 
};

friends是一个嵌套对象,也可以这样表示:

friends = {
  bill: { 
      firstName: "Bill", 
      lastName: "gates", 
      number: "1234567", 
      address: ['bishan','starbucks', 'centertable'] 
  },
  steve: { 
      firstName: "Steve", 
      lastName: "jobs", 
      number: "987654", 
      address: ['orchird', 'ikoma', 'ga'] 
  }
}

for..in循环遍历friends对象中的所有键,在您的情况下使用变量key

  

为什么我不能只输入friends.firstName === name,console.log(friends.name),return friends.name ??

因为要做到这一点,您需要firstNamename作为friends中的媒体资源。由于这些属性嵌套在内部(name不是嵌套对象内的事件),因此使用了for..in循环。

答案 1 :(得分:1)

您有一个对象friends,它有2个属性billsteve(这些是键)。调用friends.bill将使用firstname, lastname, number, address返回一个对象(值)。您需要迭代对象的所有属性friends以找到您需要的属性

您可以使用Object.values(obj)

var firstNameInput = "Steve";
var friends = {}; 
friends.bill = { 
  firstName: "Bill", 
  lastName: "gates", 
  number: "1234567", 
  address: ['bishan','starbucks', 'centertable'] 
}; 
friends.steve = { 
  firstName: "Steve", 
  lastName: "jobs", 
  number: "987654", 
  address: ['orchird', 'ikoma', 'ga'] 
};

//Iterates all the friends
Object.values(friends).forEach(function(f){
  //Compare the property "firstname" with the input
  if(f.firstName === firstNameInput){
    //Friend found
    console.log(f);
    return;
  }
});

相关问题