这是我在这里的第一个问题,所以要好一点:D
我正在构建一个基本的短信网络应用程序,我完全卡住了。我有一个函数创建一个具有“name”和“number”值的对象,用于新的联系人。然后将该对象推入我的“联系人”数组中。这一切看起来像这样:
var contacts = [];
$("#add-contact").click(function () {
var newName = $("#new-name").val();
function contactName(name, number) {
this.name = name;
this.number = number;
}
var newNumber = $("#new-number").val();
var newPerson = new contactName(newName, newNumber);
contacts.push(newPerson);
console.log(contacts)
然后我应该能够使用该信息,然后输入联系人姓名,有一个功能搜索我的“联系人”数组,给我索引,然后使用索引来调用名称和号码,这样我就可以发送消息并将其全部显示正确(未显示)。我的呼叫功能如下:
$("#send-button").click(function () {
var userNumber = $("#number-input").val();
var userIndexNumber = contacts.indexOf(userNumber);
appendToConvo(contacts[userIndexNumber]);
});
“appendToConvo”就是这样,我可以看到我是否输出了正确的信息。
当我在Chrome中运行第一个功能时,控制台显示我的“contacts”数组仅包含[contactname]。我想这个函数是添加名称和数字的数据,而不是数组的对象名称。 Chrome显示如下: Chrome console message 这让我疯狂了一点,我只需要一些帮助!感谢任何可以帮助我的人!!!
答案 0 :(得分:1)
contacts是一个contactName对象数组,而不是数字数组,因此contacts.indexOf(userNumber)
返回-1(indexOf使用严格相等来比较传递参数的元素,并且数组中没有任何对象是严格的等于userNumber
)。我建议您使用以下内容找到您感兴趣的联系人:
var matchingContacts = $.grep(contacts, function (c) {
return c.number === user.number;
});
appendToConvo(matchingContacts[0]);