Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 - Fatal编程技术网

Javascript 传递空字符串时返回空数组

Javascript 传递空字符串时返回空数组,javascript,arrays,string,Javascript,Arrays,String,我以前也做过类似的练习,总是能猜出答案,但最愚蠢的事情就是我。 我正在执行经典的“获取中间字符”(此函数获取一个字符串并返回一个包含每个单词中间字符的数组。如果单词长度为偶数,那么您应该找到中间的两个字符),我认为我的代码应该适用于除空字符串之外的所有测试。 当传递空字符串“”时,它应返回空数组[],即使指定了空数组[],它也会返回“” 这是我目前的代码: function getMiddleChars (str) { let empty =[]; let middle = str.leng

我以前也做过类似的练习,总是能猜出答案,但最愚蠢的事情就是我。 我正在执行经典的“获取中间字符”(此函数获取一个字符串并返回一个包含每个单词中间字符的数组。如果单词长度为偶数,那么您应该找到中间的两个字符),我认为我的代码应该适用于除空字符串之外的所有测试。 当传递空字符串“”时,它应返回空数组[],即使指定了空数组[],它也会返回“”

这是我目前的代码:

function getMiddleChars (str) {
 let empty =[];
 let middle = str.length /2;
 for(let i =0; i<str.length; i++){
  if(str === ""){
    return empty;
  }else if(str.length %2 == 0){
     return str.slice(middle -1, middle +1);
   }
 }
 return str.charAt(middle);

}
returns [] when passed "":
     AssertionError: expected '' to deeply equal []

还是不行。我很确定我能解决这个问题,现在我迷路了。

您可以将此作为功能的第一步:

if(str === "")
{
    return [];
}

您可以将此作为功能的第一步:

if(str === "")
{
    return [];
}

将字符串拆分为单词,使用
Array.map()
进行迭代,并返回每个单词的中间字符:

函数getMiddleChars(str){ 返回str?str.split(/\s+/).map((word)=>{ 常量middle=(word.length-1)/2; 返回word.substring(Math.floor(中间),Math.ceil(中间)+1); }) : []; } console.log(getMiddleChars('cats'));//[“a”,“t”] console.log(getMiddleChars('cat');//[“a”] console.log(getMiddleChars('a'));//[“a”] log(getMiddleChars('helloworld');//[“l”,“r']
console.log(getMiddleChars(“”));//[]将字符串拆分为单词,使用
数组.map()迭代,并返回每个单词的中间字符:

函数getMiddleChars(str){ 返回str?str.split(/\s+/).map((word)=>{ 常量middle=(word.length-1)/2; 返回word.substring(Math.floor(中间),Math.ceil(中间)+1); }) : []; } console.log(getMiddleChars('cats'));//[“a”,“t”] console.log(getMiddleChars('cat');//[“a”] console.log(getMiddleChars('a'));//[“a”] log(getMiddleChars('helloworld');//[“l”,“r']
console.log(getMiddleChars(“”));//[]
函数的第一行->
如果(str==“”)返回[];
空字符串的长度为0。因此,for循环永远不会执行,它跳过
返回空
并直接转到
返回str.charAt(中间)
。中间是0,因此0处的字符是空字符串
'
。请注意,您的函数根本不返回数组,即使是“好”字符串也是如此。函数的第一行->
if(str==“”)返回[];
空字符串的长度为0。因此,for循环从不执行,它跳过
返回空
,直接转到
返回str.charAt(中间)
。中间是0,因此0处的字符是空字符串
'
。请注意,函数根本不返回数组,即使对于“好”字符串也是如此。