var str = "You don't touch mother fucker think twice.";
第一种方法运用api
var strReverse = str.split(' ').reverse().join(' ');
分别打印
第二种方法:for循环加slice
function stringReverse(str) {
var words = [],result = '',point = 0;
for (var i = 0; i < str.length; i++) { //对字符串进行循环
if (str[i] === ' ') { //如果遇到为空格从下标0开始分割 到第一个空格的地方就是下标3,这样就得到单词you
words[words.length] = str.slice(point, i);
point = i + 1; //这时point变为4,下一次循环分割就从单词d开始了,依次这样循环
} else if (i === str.length - 1) { //到最后一个空格point加1,循环到标点符号就从twice的t截取一直到末尾
words[words.length] = str.slice(point);
}
}
console.log(words) //得到一个数组["You", "don't", "touch", "mother", "fucker", "think", "twice."]
for (var j = words.length - 1; j > -1; j--) {//倒着循环数组
result += (words[j] + ' ');
// if (words[j] === 'You') {
// result = result + words[j]
// }else{
// result = result + (words[j] + ' ')
// }
}
return result;
}
得到结果,末尾you多了一个空格 可以判断下用上面我注释的那段
运用到的一些知识点:下面大部分来自MDN
一、split: split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。
语法:stringObject.split(separator,limit)
- separator:必需。字符串或正则表达式,从该参数指定的地方分割。
- List item:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
例:
var myString = "Hello World. How are you doing?";
var splits = myString.split(" ", 3);//["Hello", "World.", "How"]
二、reverse: reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
例:
const a = [1, 7, 3];
a.reverse();// [3, 7, 1]
三、join: join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
语法:arrayObject.join(separator)
- separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
例:
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // "Wind,Rain,Fire"
var myVar2 = a.join(', '); // "Wind, Rain, Fire"
var myVar3 = a.join(' + '); //"Wind + Rain + Fire"
var myVar4 = a.join(''); // "WindRainFire"
四、slice slice() 方法返回一个新的数组对象,这一对象是一个由 start和 end 决定的原数组的浅拷贝(包括 start,不包括end)。原始数组不会被改变。
语法:arrayObject.slice(start,end)
- start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
- end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1, 3);//['Orange','Lemon']
乏了