Javascript 给定一个字符串数组,返回另一个包含其所有最长字符串的数组
1.我的代码有什么问题? 问题是:给定一个字符串数组,返回另一个包含其所有最长字符串的数组Javascript 给定一个字符串数组,返回另一个包含其所有最长字符串的数组,javascript,Javascript,1.我的代码有什么问题? 问题是:给定一个字符串数组,返回另一个包含其所有最长字符串的数组 function allLongestStrings(inputArray) { var newarr = []; if( inputArray.length == 1){ return inputArray; } var longestWord = inputArray.sort(function(a, b) {
function allLongestStrings(inputArray) {
var newarr = [];
if( inputArray.length == 1){
return inputArray;
}
var longestWord = inputArray.sort(function(a, b) {
return b.length - a.length;
});
for(var i = 0; i < longestWord.length; i++){
if(longestWord[i] > longestWord[i+1]){
newarr.push(longestWord[i]);
}
}
return newarr;
}
`
函数AllLongestString(inputArray){
var newarr=[];
如果(inputArray.length==1){
返回输入;
}
var longestWord=inputArray.sort(函数(a,b){
返回b.length-a.length;
});
for(var i=0;ilongestWord[i+1]){
新推送(最长字[i]);
}
}
返回newarr;
}
`
根据您的代码,“longestWord”的0索引处的元素将是最长的单词。
因为您需要所有最长的元素,所以在“longestWord”变量中取第一个元素的长度,使用for循环检查所有长度等于“longestWord”第一个元素的元素,如果长度相等,则将该元素推入待返回数组:
function allLongestStrings(inputArray) {
var newarr = [];
if( inputArray.length == 1){
return inputArray;
}
var longestWord = inputArray.sort(function(a, b) {
return b.length - a.length;
});
var lengthOfLongestWord = longestWord[0].length;//returns length of longest word
for(var i = 0; i < longestWord.length; i++){
if(longestWord[i].length == lengthOfLongestWord){
newarr.push(longestWord[i]);
}
}
return newarr;
}
var yolo = allLongestStrings(['hello', 'my ', 'friends']);
console.log(yolo); //reuturns['friends']
var yolo1 = allLongestStrings(['hey', 'whats', 'up', 'matey']);
console.log(yolo1); //returns['whats','matey']
函数AllLongestString(inputArray){
var newarr=[];
如果(inputArray.length==1){
返回输入;
}
var longestWord=inputArray.sort(函数(a,b){
返回b.length-a.length;
});
var lengthOfLongestWord=longestWord[0]。length;//返回最长单词的长度
for(var i=0;i
这里有一行代码:
allLongestStrings = (inputArray) => {
return inputArray.sort((a, b) => b.length - a.length)
.filter(m => m.length == inputArray[0].length)
}
这不是
javascript
代码,但您可以遵循这一点
$first = allLongestStrings(["123", "2", "abc", "5"]);
print_r($first); //return["123", "abc"]
$second = allLongestStrings(["apple", "orange", "banna", "ABCDE","1234"]);
print_r($second); //return["apple", "banna", "ABCDE"]
function allLongestStrings($inputArray) {
$l = 0;
$final_array = array();
$n = 0;
for($i=0; $i<sizeof($inputArray); $i++){
if($l < strlen($inputArray[$i])){
if($n > 0){
$n = 0;
$l = strlen($inputArray[$i]);
$final_array[$n] = $inputArray[$i];
} else {
$l = strlen($inputArray[$i]);
$final_array[$n] = $inputArray[$i];
}
$n++;
} else if($l == strlen($inputArray[$i])){
$final_array[$n] = $inputArray[$i];
$n++;
}
}
return $final_array;
}
$first=所有最长的字符串([“123”、“2”、“abc”、“5”);
打印(第一)//返回[“123”,“abc”]
$second=所有最长的字符串([“apple”、“orange”、“banna”、“ABCDE”、“1234”]);
打印(秒)//return[“apple”、“banna”、“ABCDE”]
函数allLongestStrings($inputArray){
$l=0;
$final_array=array();
$n=0;
对于($i=0;$i 0){
$n=0;
$l=strlen($inputArray[$i]);
$final_数组[$n]=$inputArray[$i];
}否则{
$l=strlen($inputArray[$i]);
$final_数组[$n]=$inputArray[$i];
}
$n++;
}else if($l==strlen($inputArray[$i])){
$final_数组[$n]=$inputArray[$i];
$n++;
}
}
返回$final_数组;
}
首先,将元素的大小存储在数组中,然后找到该数组的最大值然后找到元素
最后,将元素存储在一个单独的列表中,其中包含阵列中最大大小的元素您的具体要求是什么?您只是想按长度对输入数组排序吗?还是只取n个最大的字符串?或者试图只获取比x长的字符串?您的代码按长度排序,每种长度只保留一个字符串。我不明白你的问题。请澄清您希望得到的结果。我需要返回最长的字符串。对于inputArray=[“abc”,“cbd”,“zzzzzz”,“a”,“abcdef”,“asasa”,“aaaaa”],输出应该是所有最长的字符串(inputArray)=[“zzzzzz”,“abcdef”,“aaaaaaa”]。只需计算出OP想要的内容就值得投票……收集最长单词的For循环可能是一个while循环,一旦找到较短的单词就会终止。;-)
def allLongestStrings(inputArray):
m=[]
for i in inputArray:
m.append(len(i))
count=max(m)
l=[]
for i in inputArray:
if(len(i)==count):
l.append(i)
return l