[JavaScript]557-反转字符串中的单词 III

214 阅读3分钟

记录下做题思路

image.png

解题思路

反转字符,字符串本身是没有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"