【发布时间】:2019-04-28 06:15:14
【问题描述】:
我是编码新手。我想返回所有等长的最长字符串。当我运行它时,我得到:
RangeError: Maximum call stack size exceeded.
at arrayOfStrings:8:10
我知道它正在循环并达到通话限制。这是可以挽救的还是有更好的方法?感谢您的帮助!
function arrayOfStrings(allLLongestStrings) {
allLLongestStrings => {
let maxLng = Math.max(...arrayOfStrings.map( elem => elem.length))
return arrayOfStrings.filter(elem => elem.length === maxLng)
}
return arrayOfStrings();
}
arrayOfStrings(
[
'otorhinolaryngological',
'Otorhinolaryngological',
'Psychophysicotherapeutics',
'Thyroparathyroidectomized',
'Pneumoencephalographically',
'Radioimmunoelectrophoresis',
'Psychoneuroendocrinological',
'Hepaticocholangiogastrostomy',
'Spectrophotofluorometrically',
'Antidisestablishmentarianism'
]
);
【问题讨论】:
-
目前尚不清楚您要达到的目标。
arrayOfStrings是一个函数还是一个数组,让你在上面做filter?为什么函数中有箭头函数?请修正你的命名,消除命名冲突并修正你的语法。 -
数组名和函数名混用了。
-
return arrayOfStrings();你有一个递归调用,它接受零参数并且没有基本情况来打破你的递归。
标签: javascript arrays string methods