如何將 String 前後顛倒 ?
栏目: JavaScript · 发布时间: 7年前
内容简介:將 String 前後顛倒在實務上可能不太常見,不過用來練功倒是不錯。VS Code 1.33.1Quokka 1.0.209
將 String 前後顛倒在實務上可能不太常見,不過用來練功倒是不錯。
Version
VS Code 1.33.1
Quokka 1.0.209
Ramda 0.26.1
ECMAScript
import { reverse } from 'ramda';
let data = 'sam';
let revStr = arg => arg.split('').reverse().join('');
console.log(revStr(data));
String 沒有 reverse() ,但 array 有:
split() reverse() join()
Ramda
import { split, reverse, join, pipe } from 'ramda';
let data = 'sam';
let revStr = pipe(
split(''),
reverse,
join('')
);
console.log(revStr(data));
想法有了,且 Ramda 也提供了 split() 、 reverse() 與 join() 的 function 版本,因此已可以改用 Ramda 實現 point-free。
reverse()
import { reverse } from 'ramda';
let data = 'sam';
console.log(reverse(data));
事實上 Ramda 的 reverse() ,除了用於 array 外,也可以用在 string。
reverse()
[a] -> [a]
String -> String
將 array 或 string 顛倒
Q:為什麼 reverse() 這麼神,可同時處理 array 或 string ?
從 reverse() source code 發現,其實一點也不神。
var reverse = _curry1(function reverse(list) {
return _isString(list)
? list.split('').reverse().join('')
: Array.prototype.slice.call(list, 0).reverse();
});
Ramda 先判斷是否為 string,若是 string 一樣走 spilt() 、 reverse() 、 join() 流程;若是 array,則先 slice() 一份新的 array,再 reverse() 之,因為內建的 reverse() 是直接改變原有 array,屬 side effect 寫法。
Ramda 的 reverse() 雖然同時支援 array 與 string,實則經過 _isString() 判斷而分別處理
Conclusion
-
split()與join()是常見的組合,split()將 string 轉成 array 後,可借用 array 豐富的 function 處理,最後再使用join()還原成 string,可視為 pattern 使用 - 別忘了 Ramda 的
reverse()除了支援 array 外,也支援 string
Reference
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Design Handbook
Baeck, Philippe de 编 / 2009-12 / $ 22.54
This non-technical book brings together contemporary web design's latest and most original creative examples in the areas of services, media, blogs, contacts, links and jobs. It also traces the latest......一起来看看 《Web Design Handbook》 这本书的介绍吧!