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处的字符是空字符串'
。请注意,函数根本不返回数组,即使对于“好”字符串也是如此。