javascript - 从此数组中获取过滤后的数组(首字母相同的值)

标签 javascript arrays object

我需要创建一个函数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/

相关文章:

javascript - 如何在我的 jQuery 中正确使用 'else if' ?

javascript - 在 Javascript 中缓存内存中的对象

python - 同时迭代字典和 numpy 数组

arrays - Malloc C 中的二维数组

javascript - 在数组中查找对象

javascript - 使用函数结果读取 JS 中的对象文字

javascript - 如何使用 lodash.js 或 underscore.js 过滤 json?

javascript - 表单下拉(微调器)并尝试将值更改为所选元素的值

ios - 如何检查数组中连续的工作日

java - 如何找到对象的类型然后相应地工作?