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