JavaScript 'get middle letter' 代码 War 挑战的三元运算符函数
Ternary operator function for JavaScript 'get middle letter' Code War challenge
代码挑战:编写一个函数,获取一串偶数或奇数字母的中间字母,作为三元运算符。
我的函数适用于奇数。但它不适用于偶数 - 它似乎在跳过字母。
例如。
getMiddle("testing") // the output is "t", this is correct.
getMiddle("test") // the output is "et", it should be "es".
我的代码:
function getMiddle(str) {
return str.length % 2 === 0 ? str[str.length/2 - 1] + str[str.length/2 + 1] : str[Math.floor(str.length/2)];
}
当长度为偶数时,需要中间的2个字符。您可以通过将字符串的长度除以 2 来做到这一点。
从零开始的数组中的索引将是 s
。如果从索引中减去 1,它将是 e
。添加 +1 时,您会得到 t
在您的代码中,您连接索引 -1 和索引 +1 导致 et
您应该省略 str[str.length/2 + 1]
中的 + 1,例如:
function getMiddle(str) {
return str.length % 2 === 0 ? str[str.length / 2 - 1] + str[str.length / 2] : str[Math.floor(str.length / 2)];
}
function getMiddle(str) {
return str.length % 2 === 0 ? str[str.length / 2 - 1] + str[str.length / 2] : str[Math.floor(str.length / 2)];
}
console.log(getMiddle("testing"));
console.log(getMiddle("test"));
console.log(getMiddle("testtest"))
我知道需要使用三元,但您也可以在没有任何此类条件的情况下简单地执行此操作。
var getmid = (s, i=s.length/2) => s.slice(Math.ceil(i-1), Math.ceil(i+1)-(s.length & 1));
console.log(getmid("test")); // <- "es"
console.log(getmid("testo")); // <- "s"
代码挑战:编写一个函数,获取一串偶数或奇数字母的中间字母,作为三元运算符。
我的函数适用于奇数。但它不适用于偶数 - 它似乎在跳过字母。
例如。
getMiddle("testing") // the output is "t", this is correct.
getMiddle("test") // the output is "et", it should be "es".
我的代码:
function getMiddle(str) {
return str.length % 2 === 0 ? str[str.length/2 - 1] + str[str.length/2 + 1] : str[Math.floor(str.length/2)];
}
当长度为偶数时,需要中间的2个字符。您可以通过将字符串的长度除以 2 来做到这一点。
从零开始的数组中的索引将是 s
。如果从索引中减去 1,它将是 e
。添加 +1 时,您会得到 t
在您的代码中,您连接索引 -1 和索引 +1 导致 et
您应该省略 str[str.length/2 + 1]
中的 + 1,例如:
function getMiddle(str) {
return str.length % 2 === 0 ? str[str.length / 2 - 1] + str[str.length / 2] : str[Math.floor(str.length / 2)];
}
function getMiddle(str) {
return str.length % 2 === 0 ? str[str.length / 2 - 1] + str[str.length / 2] : str[Math.floor(str.length / 2)];
}
console.log(getMiddle("testing"));
console.log(getMiddle("test"));
console.log(getMiddle("testtest"))
我知道需要使用三元,但您也可以在没有任何此类条件的情况下简单地执行此操作。
var getmid = (s, i=s.length/2) => s.slice(Math.ceil(i-1), Math.ceil(i+1)-(s.length & 1));
console.log(getmid("test")); // <- "es"
console.log(getmid("testo")); // <- "s"