【发布时间】:2017-07-31 10:26:02
【问题描述】:
我有一个需要两个数组的函数。第一个数组称为字母,包括联系人数组中的所有(唯一)起始字母。第二个参数采用上述联系人数组。
该函数应该根据他们的起始字母对所有联系人进行分组,并为每个字母和包括联系人创建一个新数组和对象。该对象应如下所示:
{
"letter": "S",
"names": [Sample1, Sample2, Sample3]
}
该功能已经工作,但有一个问题。如果有多个联系人具有相同的起始字母,则数组将被最后一个联系人覆盖,因此名称的最大值始终为 1。这是我创建包含所有对象的数组的函数:
function groupContacts(letters, contacts) {
var groupedContacts = [];
for (var i = 0; i < contacts.length; i++) {
for (var j = 0; j < letters.length; j++) {
if (
letters[j].toLowerCase() === contacts[i].toLowerCase().substring(0, 1)
) {
let names = []
names.push(contacts[i])
groupedContacts[j] = {
letter: letters[j],
name: names
};
}
}
}
console.log(groupedContacts, "grouped Contacts");
}
感谢您的帮助!
PS:这里是 jsfiddle https://jsfiddle.net/bn7f8tsx
【问题讨论】:
-
请提供数据。
-
jsfiddle.net/bn7f8tsx 这里是一个样本数据。谢谢
-
@zbkrt 当有人要求提供更多信息时,请在您的问题中更新,不要作为评论发布
标签: javascript arrays