Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript联系人列表_Javascript - Fatal编程技术网

Javascript联系人列表

Javascript联系人列表,javascript,Javascript,嗨,我用JavaScript编写了一个简单的联系人列表应用程序。我创建了一个搜索功能,在运行时显示所有联系人列表。我只是想知道在运行函数时如何输出如下返回: 名字: 姓氏: 编号: 地址: 目前,它在顶部显示了我的输出名称,但在下面显示了我的“朋友”变量代码 我的JavaScript代码如下: var friends = { bill: { firstName: "Bill", lastName: "Stevens", number: "07872937209",

嗨,我用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;
    }
  }
};

在这里,我创建了一个名为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以大写字母开头,name或object键为小写,因此===永远不会返回true。这里我用了小写来纠正这个问题

function search(name) {
  for (var prop in friends) {
    if (friends[prop].firstName.toLowerCase() === name) {
      print(friends[prop]);
    }
  }
};
我注意到的一点是,对象中不能有多个具有相同昵称的人,因为所有对象键都是唯一的。您可能会发现以下内容很有用

简而言之,我冒昧地将您的friends对象切换到一个数组,添加了一个新的昵称键,并包含了一个fetchFriend函数,用于从数组中提取与您传入的昵称匹配的对象。然后,您可以循环返回的数组,而不管您在好友列表中给多少人起了昵称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);

在哪里调用列表和搜索函数,使用什么参数?他们怎么了?非常感谢!这把一切都整理好了,我学到了一些很棒的东西:NP。我应该指出,过滤器只适用于IEV9及以上版本,但如果您需要在工作中使用旧版本,则有一个polyfill。
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);