我有一個函數,需要兩個數組。第一個數組稱爲字母,幷包含來自聯繫人數組的所有(唯一)起始字母。第二個參數採用上述聯繫人數組。從聯繫人創建字母分組列表
函數應該根據它們的起始字母對所有聯繫人進行分組,併爲每個字母和包含聯繫人創建一個新的數組。對象應該看起來像這樣:
{
"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
請提供數據的小提琴。這裏 –
https://jsfiddle.net/bn7f8tsx/是樣本數據的小提琴。由於 – zbkrt
@zbkrt當有人請求的其他信息,請在你的問題更新,而不是將它張貼作爲替代.substring的'評論 – Rajesh