我需要创建一个函数indexWords()
,它接受一个数组作为参数并返回一个以单词的第一个字母作为键的对象,每个键列出所有以此开头的单词信。
举个例子,因为我的英语真的很糟糕哈哈:
indexWords(["apple", "car", "cat"]) // output: {a: ["apple"], c: ["car", "cat"]}
所以我开始获取一个包含第一个字母的数组,并通过这样做删除重复的字母:
indexWords(arr) {
let firstLetters = [... new Set(arr.map(x => x[0]))]
}
但是我需要过滤给定的 arr
并为每个具有相同首字母的值创建一个新的映射数组。基本上我应该检查 if arr[i][0] === firstLetters[0]
,然后检查 firstLetters[1]
等等。但是如何知道有多少索引会进入 firstLetters
?我迷路了……
最佳答案
您可以使用 Array.reduce
来构建数组,如下所示。
function indexWords(input) {
return input.reduce((acc, cur) => {
acc[cur[0]] ? acc[cur[0]].push(cur) : acc[cur[0]] = [ cur ];
return acc;
}, {});
}
console.log(indexWords(["apple", "car", "cat"]));
关于javascript - 从此数组中获取过滤后的数组(首字母相同的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64283605/