Anagrams of string (with duplicates) (字符串异位(和重复))
使用递归。
遍历给定字符串中的每个字母,用其余字母创建所有部分字母。
使用 Array.map()
将字母与每个部分字母组合,然后使用 Array.reduce()
将所有字母组合到一个数组中。当给定字符串数量等与 2
或1
时做简单处理。
const anagrams = str => {
if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str];
return str.split('').reduce((acc, letter, i) =>
acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), []);
};
// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']
Capitalize first letter of every word (所有单词的第一个字母大写)
使用 replace()
去查找单词的第一个字母并使用 toUpperCase()
改为大写。
const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase());
// capitalizeEveryWord('hello world!') -> 'Hello World!'
Check for palindrome (检查回文)
使用toLowerCase()
转换字符串并用 replace()
删除其中的非字母数字字符。
然后,使用 split('')
分散为单个字符,再使用 reverse()
和join('')
倒序合并后与原字符进行比较。
const palindrome = str => {
const s = str.toLowerCase().replace(/[\W_]/g,'');
return s === s.split('').reverse().join('');
}
// palindrome('taco cat') -> true
Reverse a string (反转一个字符串)
使用数组解构和 Array.reverse()
来反转字符串中字符的顺序。
使用 join('')
组合字符获得一个字符串。
const reverseString = str => [...str].reverse().join('');
// reverseString('foobar') -> 'raboof'
Sort characters in string (alphabetical) 字符串排序(按字母顺序排列)
使用 split('')
切割字符串,使用 Array.sort
通过 localeCompare()
去排序,再使用 join('') 组合。
const sortCharactersInString = str =>
str.split('').sort((a, b) => a.localeCompare(b)).join('');
// sortCharactersInString('cabbage') -> 'aabbceg'
Truncate a String (字符串截断)
确定字符串的长度是否大于num
。
将字符串截断为所需的长度,在末尾或原始字符串后附加 ...
。
const truncate = (str, num) =>
str.length > num ? str.slice(0, num > 3 ? num - 3 : num) + '...' : str;
// truncate('boomerang', 7) -> 'boom...'