记录下做题思路
解题思路
反转字符,字符串本身是没有reverse()方法的,因此需要将其转成数组。需要注意单词的顺序是不变的。
var reverseWords = function(s) {
//将字符串转成数组
let arr = s.split(' ')
//遍历数组,将每一项字符串也转成数组,调用reverse进行反转,完成反转后再转成字符串
let res = arr.map(item=>{
return item.split('').reverse().join('')
})
//将反转后数组转成字符串返回
return res.join(' ')
};
涉及到的知识点扩展
字符串和数组之间如何转换
1.字符串的split方法
split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。
语法:
str.split([separator[, limit]])
参数:
separator--指定表示每个拆分应发生的点的字符串。`separator` 可以是一个字符串或正则表达式。如果纯文本分隔符包含多个字符,则必须找到整个字符串来表示分割点。
如果在str中省略或不出现分隔符,则返回的数组包含一个由整个字符串组成的元素。
如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。
limit--一个整数,限定返回的分割片段数量。当提供此参数时,split 方法会在指定分隔符的每次出现时分割该字符串,但在限制条目已放入数组时停止。如果在达到指定限制之前达到字符串的末尾,它可能仍然包含少于限制的条目。新数组中不返回剩下的文本。
2.数组的map方法
map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值(包括 undefined)组合起来形成一个新数组。 callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete 删除的索引则不会被调用。
语法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
参数:
callback 生成新数组元素的函数,有三个参数
currentValue 数组正在处理的当前元素
index 正在处理的当前元素的索引值
arr map方法调用的数组
返回值:
一个由原数组每个元素执行回调函数的结果组成的新数组。
示例:
//求对应数字的平方根
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9]
3.数组的reverse方法
reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
语法:
arr.reverse()
返回值:
颠倒之后的数组
示例:
const a = [1, 2, 3];
console.log(a); // [1, 2, 3]
a.reverse();
console.log(a); // [3, 2, 1]
4.数组的join方法
join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
语法:
arr.join([separator])
参数:
`separator` 可选
指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串。
如果缺省该值,数组元素用逗号(`,`)分隔。如果`separator`是空字符串(`""`),则所有元素之间都没有任何字符
返回值:
一个所有数组元素连接的字符串。如果 arr.length为0,则返回空字符串。
示例:
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire"
var myVar2 = a.join(', '); // myVar2的值变为"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join(''); // myVar4的值变为"WindRainFire"