超过4个字符的反向单词
我想看看为什么我的函数总是返回 undefined?
输出应该是相同的字符串,但每个单词超过 4 个字符都颠倒了?
抱歉,我仍然是 JavaScript 的菜鸟,这让我发疯了哈哈
谢谢!
const reverseString = (data) => {
data = data.split(' '); //convert to array
data = data.forEach(function flipper (x) {
x = x.split('');
if (x.length > 4) {
x = x.reverse();
}
x = x.join('');
});
return console.log(data);
}
reverseString('Hello World thank you so much');
回答
首先 forEach 返回undefined所以你不能直接分配到源数组。因为您需要将反向字符串分配给源数组。最好在 forEach 中使用回调函数的第三个参数(即源数组)
为每个
const reverseString = (data) => {
data = data.split(" "); //convert to array
data.forEach(function flipper(x, i, src) {
x = x.split("");
if (x.length > 4) {
x = x.reverse();
}
x = x.join("");
src[i] = x;
});
return data.join(" ");
};
const result = reverseString("Hello World thank you so much");
console.log(result);
使用地图很容易实现这一点
const reverseString = (data) => {
return data
.split(" ")
.map(x => x.length > 4 ? x.split("").reverse().join("") : x)
.join(" ");
};
const result = reverseString("Hello World thank you so much");
console.log(result);