Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在字符串数组中查找最长的公共前缀?_Javascript - Fatal编程技术网

Javascript 如何在字符串数组中查找最长的公共前缀?

Javascript 如何在字符串数组中查找最长的公共前缀?,javascript,Javascript,我试图使用.each方法解决这个问题,但它没有返回true,因此它没有添加到我的字符串中,我不知道为什么 var longestCommonPrefix=functionarr{ 如果arr.length==0{ 返回未定义; } 让结果=; 对于let i=0;iarr[i].charAti==x{ 结果+=arr[i]。特征; } } 返回结果 } 控制台。loglongestCommonPrefix[花,流,飞行]//fl您需要迭代一个字符串,而不是整个数组:检查字符串的第一个字符是否无

我试图使用.each方法解决这个问题,但它没有返回true,因此它没有添加到我的字符串中,我不知道为什么

var longestCommonPrefix=functionarr{ 如果arr.length==0{ 返回未定义; } 让结果=; 对于let i=0;iarr[i].charAti==x{ 结果+=arr[i]。特征; } } 返回结果 } 控制台。loglongestCommonPrefix[花,流,飞行]//fl您需要迭代一个字符串,而不是整个数组:检查字符串的第一个字符是否无处不在,然后是第二个字符,以此类推:

var longestCommonPrefix=functionarr{ 如果arr.length==0{ 返回未定义; } 让结果=; 对于设i=0;ix.charAti===arr[0][i]{ 结果+=arr[i]。特征; }否则就断了; } 返回结果; } 控制台。loglongestCommonPrefix[花,流,飞行]//fl您需要迭代一个字符串,而不是整个数组:检查字符串的第一个字符是否无处不在,然后是第二个字符,以此类推:

var longestCommonPrefix=functionarr{ 如果arr.length==0{ 返回未定义; } 让结果=; 对于设i=0;ix.charAti===arr[0][i]{ 结果+=arr[i]。特征; }否则就断了; } 返回结果; } 控制台。loglongestCommonPrefix[花,流,飞行]//fl您对Array.each的使用是正确的。您希望检查数组中的每个字符串在位置i处是否具有相同的字符。我想当您命名参数x时,您可能会感到困惑,因为它实际上是一个字符串:

var longestCommonPrefix=函数词{ 如果words.length==0{ 回来 } 常量字母=[]; const lengthOfShortestWord=Math.min…words.mapword=>word.length; 对于let i=0;iword[i]==char{ 字母.pushchar; }否则{ 打破 } } 回信。加入; } 控制台。loglongestCommonPrefix[花,流,飞行]//fl您对Array.each的使用是正确的。您希望检查数组中的每个字符串在位置i处是否具有相同的字符。我想当您命名参数x时,您可能会感到困惑,因为它实际上是一个字符串:

var longestCommonPrefix=函数词{ 如果words.length==0{ 回来 } 常量字母=[]; const lengthOfShortestWord=Math.min…words.mapword=>word.length; 对于let i=0;iword[i]==char{ 字母.pushchar; }否则{ 打破 } } 回信。加入; }
控制台。loglongestCommonPrefix[花,流,飞行]//fl除非我弄错了,否则最长的前缀永远不会大于数组中最小的字符串

在这种情况下,fl是最小的字符串和最长的公共前缀:

[花卉、佛罗里达、航班] 因此,首先在arr中查找最小的字符串:

让[sm]=[…arr].sorta,b=>a.length-b.length; 然后检查arr中的所有字符串是否以sm开头:

arr.everystr=>str.startsWithsm; 如果不是这样,则将sm缩短一个字符:

sm=sm.0,-1; 然后继续,直到最终找到最长的前缀或sm变成空字符串:

常量前缀=arr=>{ 让[sm]=[…arr].sorta,b=>a.length-b.length; 而sm&&!arr.everystr=>str.startsWithsm=sm.slice0,-1; 返回sm; };
除非我弄错了,否则最长的前缀永远不会大于数组中最小的字符串

在这种情况下,fl是最小的字符串和最长的公共前缀:

[花卉、佛罗里达、航班] 因此,首先在arr中查找最小的字符串:

让[sm]=[…arr].sorta,b=>a.length-b.length; 然后检查arr中的所有字符串是否以sm开头:

arr.everystr=>str.startsWithsm; 如果不是这样,则将sm缩短一个字符:

sm=sm.0,-1; 然后继续,直到最终找到最长的前缀或sm变成空字符串:

常量前缀=arr=>{ 让[sm]=[…arr].sorta,b=>a.length-b.length; 而sm&&!arr.everystr=>str.startsWithsm=sm.slice0,-1; 返回sm; };