循环遍历javascript对象

循环遍历javascript对象,javascript,Javascript,如何访问如下javascript对象的属性? 如果可能,请解释每个步骤 var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number": "0543236543", "likes": ["Pizza", "Coding", "Brownie Points"] }, { "firstName": "Harry", "lastName": "Potter", "num

如何访问如下javascript对象的属性? 如果可能,请解释每个步骤

var contacts = [
{
    "firstName": "Akira",
    "lastName": "Laine",
    "number": "0543236543",
    "likes": ["Pizza", "Coding", "Brownie Points"]
},
{
    "firstName": "Harry",
    "lastName": "Potter",
    "number": "0994372684",
    "likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
    "firstName": "Sherlock",
    "lastName": "Holmes",
    "number": "0487345643",
    "likes": ["Intriguing Cases", "Violin"]
},
{
    "firstName": "Kristian",
    "lastName": "Vos",
    "number": "unknown",
    "likes": ["Javascript", "Gaming", "Foxes"]
  }
 ];


 function lookUp(firstName, prop){

     //code here

 }
我希望能够访问联系人的姓名。比如说

                      lookUp("Akira", "likes") 
应该告诉我名字之类的。而且 查找(“Drew”、“like”) 你应该还给我 “没有这种接触”


提前多谢

这是一个对象数组,因此可以在数组中搜索
.firstName
属性与所需名称匹配的对象

然后,您将看到同一个匹配对象是否具有传入的其他名称的属性,例如
“likes”


但是,请注意,在一种情况下返回数组,在另一种情况下返回字符串是非常罕见的。您正在强制调用方测试返回值的类型,以便知道如何正确使用它。这在Javascript编程中并不常见。

您有两个选择。其中一个是for循环,通过联系人列表进行循环,但是您也可以使用
Array.prototype.find
,如果您愿意从功能上执行此操作。这是在数组中循环,直到给定的回调满足正确的条件。比使用for循环更清晰,但性能却不尽相同

ES5
如果您知道名称(第一个参数)。。。那为什么要退货呢?仅仅是喜欢就够了吗?此外,谷歌在loopHi。谢谢你的帮助。当姓名不在联系人中时,我想返回字符串值“无此类联系人”;当价值不存在时,“无此类财产”;然而,我的else-if语句似乎在循环的第一次迭代中“阻塞”了循环。请在此处帮助编码:@Drew-查看我在回答您的特定请求时添加的内容,但是在一个代码路径中返回数组,在其他代码路径中返回字符串通常不被认为是良好的设计实践。哦,好的。那太好了,谢谢!
function lookUp(fname, prop) {
    for (var i = 0; i < contacts.length; i++) {
        if (contacts[i].firstName === fname) {
            return contacts[i][prop];
        }
    }
    return null;
}

lookUp("Akira", "likes");   // returns ["Pizza", "Coding", "Brownie Points"]
lookUp("Drew", "like");     // returns null (because name doesn't exist)
lookup("Akira", "address"); // returns undefined (because property doesn't exist)
function lookUp(fname, prop) {
    for (var i = 0; i < contacts.length; i++) {
        if (contacts[i].firstName === fname) {
            return contacts[i][prop] || "No such property";
        }
    }
    return "No such Contact";
}
// Callback for the next function
function lookup(firstName, prop) {
    var tarContact = contacts.find(function (contact) {
        return contact.name === firstName;
    });

    return tarContact && tarContact[prop];
});

function lookup(firstName, prop) {
    for (var i = 0; i < contacts.length; i++) {
        var contact = contacts[i];
        if (contact.name === firstName) {
            return contact && contact[prop];
        }
    }

    return;
}
const lookup = (firstName, prop) => {
    let tarContact = contacts.find((contact) => contact.name === firstName);
    return tarContact && tarContact[prop];
}

const lookup = (firstName, prop) => {
    for (let contact of contacts) {
        if (contact.name === firstName) {
            return contact && contact[prop];
        }
    }

    return;
}