Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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_Arrays_String_Sorting - Fatal编程技术网

Javascript 如何返回数组中最长的字符串—;即使数组中包含的项不是字符串,也可以吗?

Javascript 如何返回数组中最长的字符串—;即使数组中包含的项不是字符串,也可以吗?,javascript,arrays,string,sorting,Javascript,Arrays,String,Sorting,假设我正在编写这样一个函数: function longestString (someArray) { // code } 如果someArray=['word','longer phrase',['a','b','c'],123456789101121314151617],我希望函数只返回数组中最长的字符串,忽略整数和可能位于其中的其他数组。我试过这个: function longestString (someArray) { return someArray.sort(fu

假设我正在编写这样一个函数:

function longestString (someArray) {
    // code
}
如果
someArray=['word','longer phrase',['a','b','c'],123456789101121314151617]
,我希望函数只返回数组中最长的字符串,忽略整数和可能位于其中的其他数组。我试过这个:

function longestString (someArray) {
    return someArray.sort(function (a, b) { return b.length - a.length; })[0];
}

它不起作用,我现在被卡住了/

只过滤字符串元素并执行此操作

function longestString (someArray) {
    return someArray
        .filter(function(a){ return typeof(a)=='string' })
        .sort(function (a, b) { return b.length - a.length; })[0];
}

只筛选字符串元素并执行此操作

function longestString (someArray) {
    return someArray
        .filter(function(a){ return typeof(a)=='string' })
        .sort(function (a, b) { return b.length - a.length; })[0];
}
试试这个:

function longestString(someArray) {
    var result = "";
    for (var i = 0; i < someArray.length; i++) {
        if ((typeof someArray[i] === "string") && (someArray[i].length > result.length)) {
            result = someArray[i];
        }
    }
    return result;
}
函数最长字符串(someArray){
var结果=”;
for(var i=0;iresult.length)){
结果=someArray[i];
}
}
返回结果;
}
试试这个:

function longestString(someArray) {
    var result = "";
    for (var i = 0; i < someArray.length; i++) {
        if ((typeof someArray[i] === "string") && (someArray[i].length > result.length)) {
            result = someArray[i];
        }
    }
    return result;
}
函数最长字符串(someArray){
var结果=”;
for(var i=0;iresult.length)){
结果=someArray[i];
}
}
返回结果;
}
尝试执行以下操作:

function longestString (someArray) {
$longest_string = '';
foreach ($someArray as $value)
    {
     $current_length = strlen($longest_string);
     if(strlen($value) > $current_length )  $longest_string = $value;
    }

    return $longest_string; 
}试着做:

function longestString (someArray) {
$longest_string = '';
foreach ($someArray as $value)
    {
     $current_length = strlen($longest_string);
     if(strlen($value) > $current_length )  $longest_string = $value;
    }

    return $longest_string; 
}试试这个

var a=['word','longer-phrase',['a','b','c',123456789101121314151617];
返回最长字符串(a);
函数返回最长字符串(arr){
var longestString='';
对于(变量i=0;ilongestString.length){
longestString=arr[i];
}
};
返回最长的字符串;
}
试试这个

var a=['word','longer-phrase',['a','b','c',123456789101121314151617];
返回最长字符串(a);
函数返回最长字符串(arr){
var longestString='';
对于(变量i=0;ilongestString.length){
longestString=arr[i];
}
};
返回最长的字符串;

}
以下是我的方法。实际上,您只想知道短语是否比前一个短语长,以及它是否是字符串

var someArray=['word','longer phrase',['a','b','c',123456789101121314151617]
var longestString=函数(arr){
var=”;
对于(变量i=0;i
以下是我的方法。实际上,您只想知道短语是否比前一个短语长,以及它是否是字符串

var someArray=['word','longer phrase',['a','b','c',123456789101121314151617]
var longestString=函数(arr){
var=”;
对于(变量i=0;i
当我看到这个问题时,答案是0,当我完成编写和测试我的函数时,答案是5。但这是我的方法:

这里的关键是首先只过滤字符串。然后,列出数组中的所有长度。然后使用该阵列,您可以在较大的阵列上获得匹配

function longestString (someArray) {
//we only need strings, so first we will filter all the data
var stringsOnly = [];
for (var i = 0; i < someArray.length; i++) {
    if(typeof(someArray[i]) === 'string'){
        stringsOnly.push(someArray[i]);
    }
};
//Now with an array of just strings, we can get their indivial lenghts
var stringLengths = [];
for (var i = 0; i < stringsOnly.length; i++) {
    var currentString = stringsOnly[i];
    stringLengths.push(currentString.length);
};
//Get the max length
var maxLength = Math.max.apply(Math,stringLengths);
//get a string wich length equals to maxLength
for (var i = 0; i < stringsOnly.length; i++) {
    var theString = stringsOnly[i];
    if(theString.length === maxLength){return theString};
 }; 
}
函数最长字符串(someArray){
//我们只需要字符串,所以首先我们将过滤所有数据
var stringsOnly=[];
for(var i=0;i
此函数将返回最大的字符串。如果多个字符串具有相同的长度,它将返回第一个字符串。但是,如果要获取各种字符串,可以对上述函数进行一些小修改:

function multipleLongestString (someArray) {
//we only need strings, so first we will filter all the data
var stringsOnly = [];
for (var i = 0; i < someArray.length; i++) {
    if(typeof(someArray[i]) === 'string'){
        stringsOnly.push(someArray[i]);
    }
};
//Now with an array of just strings, we can get their indivial lenghts
var stringLengths = [];
for (var i = 0; i < stringsOnly.length; i++) {
    var currentString = stringsOnly[i];
    stringLengths.push(currentString.length);
};
//Get the max length
var maxLength = Math.max.apply(Math,stringLengths);

//modification here
longests = [];
//get a string wich length equals to maxLength
for (var i = 0; i < stringsOnly.length; i++) {
    var theString = stringsOnly[i];
    if(theString.length === maxLength){longests.push(theString)};
 };
return longests;
}
函数multipleLongestString(someArray){
//我们只需要字符串,所以首先我们将过滤所有数据
var stringsOnly=[];
for(var i=0;i
这是一个额外的可能会帮助你以后。但是,如果您只想要最大的一个,请使用第一个函数。我希望我的回答是相关的


:)

当我看到这个问题时,它有0个答案,当我完成编写和测试我的函数时,有5个答案。但这是我的方法:

这里的关键是首先只过滤字符串。然后,列出数组中的所有长度。然后使用该阵列,您可以在较大的阵列上获得匹配

function longestString (someArray) {
//we only need strings, so first we will filter all the data
var stringsOnly = [];
for (var i = 0; i < someArray.length; i++) {
    if(typeof(someArray[i]) === 'string'){
        stringsOnly.push(someArray[i]);
    }
};
//Now with an array of just strings, we can get their indivial lenghts
var stringLengths = [];
for (var i = 0; i < stringsOnly.length; i++) {
    var currentString = stringsOnly[i];
    stringLengths.push(currentString.length);
};
//Get the max length
var maxLength = Math.max.apply(Math,stringLengths);
//get a string wich length equals to maxLength
for (var i = 0; i < stringsOnly.length; i++) {
    var theString = stringsOnly[i];
    if(theString.length === maxLength){return theString};
 }; 
}
函数最长字符串(someArray){
//我们只需要字符串,所以首先我们将过滤所有数据
var stringsOnly=[];
for(var i=0;i