天天4个JavaScript字符串与数组的API,帮助你们与我本身加深记忆,持续更新... ...数组
语法: arr.reverse()
MDN: reverse() 方法将数组中元素的位置颠倒,并返回该数组。该方法会改变原数组。bash
var a = [1,2,3];
var _a = a.reverse();
console.log(a); // [3,2,1]
console.log(_a); // [3,2,1]
复制代码
固然本身实现reverse()方法其实也很简单:函数
window.Array.prototype.myReverse = function () {
for(let i=0;i<this.length/2;i++){
let temp = this[i];
this[i] = this[this.length-1-i];
this[this.length-1-i] = temp;
}
}
复制代码
语法:arr.join([separator])
MDN: join() 方法将一个数组(或一个类数组对象)的全部元素链接成一个字符串并返回这个字符串。若是数组只有一个value,那么将返回该值而不使用分隔符。示例以下:ui
var arr = ['唱','跳','Rap','篮球'];
var arrStr1 = arr.join(); console.log(arrStr1); // "唱,跳,Rap,篮球"
var arrStr2 = arr.join(',');console.log(arrStr2); // "唱,跳,Rap,篮球"
var arrStr3 = arr.join('');console.log(arrStr3); // "唱跳Rap篮球"
var arrStr4 = arr.join(' ');console.log(arrStr4); // "唱 跳 Rap 篮球"
var arrStr5 = arr+'';console.log(arrStr5); // "唱,跳,Rap,篮球"
复制代码
语法:去MDN本身看
MDN: map() 方法建立一个新数组,其结果是该数组中的每一个元素都调用一个提供的函数后返回的结果。示例:this
var arr = [1,2,3];
var arr2 = arr.map((e)=>{return e*2});console.log(arr2); // [2, 4, 6]
var arr3 = arr.map((e)=>{return e*e});console.log(arr3); //[1, 4, 9]
var arr4 = arr.map((e)=>{return e+''});console.log(arr4); // ["1", "2", "3"]
复制代码
语法:str.split([separator[, limit]])
MDN: split() 方法使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以肯定每一个拆分的位置。 示例:spa
var str = "我是ikun,我喜欢 唱 跳 Rap和篮球";
var strArr1 = str.split();console.log(strArr1); //["我是ikun,我喜欢 唱 跳 Rap和篮球"]
var strArr2 = str.split(' ');console.log(strArr2);//["我是ikun,我喜欢", "唱", "跳", "Rap和篮球"]
var strArr3 = str.split('');console.log(strArr3);
// 若是空字符串("")被用做分隔符,则字符串会在每一个字符之间分割。
//["我", "是", "i", "k", "u", "n", ",", "我", "喜", "欢", " ", "唱", " ", "跳", " ", "R", "a", "p", "和", "篮", "球"]
var strArr4 = str.split(',');console.log(strArr4);//["我是ikun", "我喜欢 唱 跳 Rap和篮球"]
复制代码
反转字符串中的单词是Leetcode上第557号问题,具体问题描述以下:prototype
给定一个字符串,
你须要反转字符串中每一个单词的字符顺序,
同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每一个单词由单个空格分隔,
而且字符串中不会有任何额外的空格。
复制代码
这道题目使用JavaScript就能够使用上述API解出结果:code
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
return s.split(' ').map((e)=>{
return e.split('').reverse().join('')
}).join(' ');
};
复制代码
其实仔细想想这个解题过程并不难,思路为:对象
step1:
"Let's take LeetCode contest" => ["Let's","take","LeetCode","contest"]
step2:
"Let's" => ["L","e","t","'","s"]=>["s","'","e","t","L"]=> "s'teL"
step3:
["Let's","take","LeetCode","contest"] => ["s'teL","ekat","edoCteeL","tsetnoc"]
step4:
["s'teL","ekat","edoCteeL","tsetnoc"] => "s'teL ekat edoCteeL tsetnoc"
复制代码
本题目重点仍然在API的掌握上~ip