我 面临 的 挑战 是 :
- 编写 一 个 将 字符 串 数组 作为 参数 的 函数
- 然后 , 按 字符 串 的 首 字母 对 数组 中 的 字符 串 进行 分组
- 返回 一 个 对象 , 该 对象 包含 具有 表示 首 字母 的 键 的 属性
例如 :
应 返回
groupIt(['hola', 'adios', 'chao', 'hemos', 'accion'])
// Should return
{
a: [ "adios", "accion" ]
c: [ "chao" ]
h: [ "hola", "hemos" ]
}
中 的 每 一 个
这 是 我 的 回答 , 它 返回 了 预期 的 对象 , 但 没有 通过 页面 中 的 测试 :
function groupIt(arr) {
let groups = {}
let firstChar = arr.map(el=>el[0])
let firstCharFilter = firstChar.filter((el,id)=>{
return firstChar.indexOf(el)===id
})
firstCharFilter.forEach(el=>{
groups[el]=[]
})
firstCharFilter.forEach(char=>{
for(let word of arr) {
if(word[0]==char) {
groups[char].push(word)
}
}
})
return groups
}
const result = groupIt(['hola', 'adios', 'chao', 'hemos', 'accion']);
console.log(result);
格式
我 在 哪里 失败 了 ?
这里 测试 一下 :https://www.jschallenger.com/javascript-arrays/javascript-group-array-strings-first-letter 的 最 大 值
6条答案
按热度按时间nwo49xxi1#
该 网站 不 喜欢
.reduce
, 但 这里 有 一 个 方法 :中 的 每 一 个
wfypjpf42#
我运行了你的代码以及JS challenger提供的测试示例。我注意到它们是区分大小写的。所以虽然你的代码运行良好,但如果单词以大写字母开始,它将无法通过某些情况。附件是我的版本,通过了所有测试示例。
如果添加:. to LowerCase到firstChar,我相信你也会通过的。)
如果下面的图片不工作,请让我知道,我只是学习如何有助于堆栈交换,谢谢。
j5fpnvbx3#
原因是区分大小写。请在charAt(0)之后放入toLowerCase。
下面是我的例子:
https://stackblitz.com/edit/node-tebpdp?file=ArrayStringsFirstLetter.js
Link to screenshot!
oipij1gg4#
你的代码是正确的,唯一错误的部分是你没有小写第一个字母,下面是你的代码与额外的小写第一个字母,所以它通过了测试:
nukf8bse5#
dojqjjoe6#