天天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