您好我用JavaScript编写了一个简单的联系人列表应用程序。我创建了一个搜索功能,显示运行时的所有联系人列表。我只是想知道如何运行函数来输出这样的返回值:
目前它显示我的输出名称在顶部,但随后显示我的朋友'下面的变量代码。
我的JavaScript代码如下:
var friends = {
bill: {
firstName: "Bill",
lastName: "Stevens",
number: "07872937209",
address: ['Park Road', 'Blaby','Leicester', 46]
},
steve:{
firstName: "Steve",
lastName: "Elliott",
number: "07970943757",
address: ['Park Road2', 'Blaby2','Leicester2', 462]
}
};
var list = function(object)
{
for(var key in object){
console.log(key);
}
};
var search = function(name) {
for(var prop in friends) {
if(friends[prop].firstName === name) {
console.log(friends[prop]);
return friendsName;
}
}
};
答案 0 :(得分:0)
var friends = {
bill: {
firstName: "Bill",
lastName: "Stevens",
number: "07872937209",
address: ['Park Road', 'Blaby', 'Leicester', 46]
},
steve: {
firstName: "Steve",
lastName: "Elliott",
number: "07970943757",
address: ['Park Road2', 'Blaby2', 'Leicester2', 462]
}
};
var list = function (object)
{
for (var key in object)
{
console.log(key);
}
};
var search = function (name)
{
for (var prop in friends)
{
if (friends[prop].firstName === name)
{
var index = 1;
for (var entity in friends[prop]) {
//add if logic for formating the op
console.log(index + ". " + entity + " " + friends[prop][entity]);
index++;
}
return;
}
}
};
答案 1 :(得分:0)
我在这里创建了一个名为print
的新功能,它将以您想要的格式输出特定的人。
function print(obj) {
for (var k in obj) {
if (k === 'address') {
console.log(obj[k].join(', '));
} else {
console.log(obj[k]);
}
}
}
您需要在此功能中注意的一件事是firstName
永远不会===
name
。 firstName
以大写字母开头,名称(或对象键)以小写字母开头,因此===
永远不会返回true。在这里,我使用了toLowercase()
来纠正这个问题。
function search(name) {
for (var prop in friends) {
if (friends[prop].firstName.toLowerCase() === name) {
print(friends[prop]);
}
}
};
我注意到的一件事是,您将无法拥有多个具有相同昵称(对象中的键)的人,因为所有对象键都是唯一的。您可能会发现以下内容非常有用。
简而言之,我冒昧地将你的朋友对象切换到一个数组(添加一个新的昵称密钥)并包含一个fetchFriend
函数,该函数使用filter
从数组中提取那些匹配的对象你传入的昵称。然后你可以循环返回的数组,无论你有多少人昵称" bill"在你的朋友列表中:
var friends = [
{
nickname: 'bill',
firstName: "Bill",
lastName: "Stevens",
number: "07872937209",
address: ['Park Road', 'Blaby', 'Leicester', 46]
},
{
nickname: 'bill',
firstName: "William",
lastName: "Fisher",
number: "078729234209",
address: ['Moose Road', 'Whitby', 'Yorkshire', 146]
},
{
nickname: 'steve',
firstName: "Steve",
lastName: "Elliott",
number: "07970943757",
address: ['Park Road2', 'Blaby2', 'Leicester2', 462]
}
];
function list(arr) {
for (var i = 0, l = arr.length; i < l; i++) {
console.log(arr[i].firstName);
}
};
function print(obj) {
for (var k in obj) {
if (k === 'address') {
console.log(obj[k].join(', '));
} else {
console.log(k + ': ' + obj[k]);
}
}
}
function fetchFriend(nickname, arr) {
return arr.filter(function (el) {
return el.nickname === nickname;
});
}
function search(nickname, friends) {
var friendArr = fetchFriend(nickname, friends);
for (var i = 0, l = friendArr.length; i < l; i++) {
print(friendArr[i]);
}
};
search('bill', friends);