Javascript联系人列表

时间:2014-08-01 10:58:36

标签: javascript

您好我用JavaScript编写了一个简单的联系人列表应用程序。我创建了一个搜索功能,显示运行时的所有联系人列表。我只是想知道如何运行函数来输出这样的返回值:

  1. 名字:
  2. 姓氏:
  3. 数:
  4. 地址:
  5. 目前它显示我的输出名称在顶部,但随后显示我的朋友'下面的变量代码。

    我的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;
        }
      }
    };
    

2 个答案:

答案 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永远不会=== namefirstName以大写字母开头,名称(或对象键)以小写字母开头,因此===永远不会返回true。在这里,我使用了toLowercase()来纠正这个问题。

function search(name) {
  for (var prop in friends) {
    if (friends[prop].firstName.toLowerCase() === name) {
      print(friends[prop]);
    }
  }
};

DEMO

我注意到的一件事是,您将无法拥有多个具有相同昵称(对象中的键)的人,因为所有对象键都是唯一的。您可能会发现以下内容非常有用。

简而言之,我冒昧地将你的朋友对象切换到一个数组(添加一个新的昵称密钥)并包含一个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);

DEMO