如何將 String 前後顛倒 ?

栏目: JavaScript · 发布时间: 6年前

内容简介:將 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()

如何將 String 前後顛倒 ?

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。

如何將 String 前後顛倒 ?

reverse()

import { reverse } from 'ramda';

let data = 'sam';
console.log(reverse(data));

事實上 Ramda 的 reverse() ,除了用於 array 外,也可以用在 string。

reverse()

[a] -> [a]
String -> String

將 array 或 string 顛倒

如何將 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

Samantha Ming , How to Reverse a String in JavaScript ?

Ramda , reverse()

Ramda , split()

Ramda , join()


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

新内容创业:我这样打造爆款IP

新内容创业:我这样打造爆款IP

南立新、曲琳 / 机械工业出版社 / 2016-5-10 / 39.00

这是个内容创业爆棚的时代,在采访几十家内容创业公司,与一线最优秀的创业者独家对话之后,作者写作了这本书,其中包括对这个行业的真诚感触,以及希望沉淀下来的体系化思考。 本书共分三个部分讲述了爆红大号的内容创业模式和方法。其中第一部分,讲述了新的生产方式,即内容形态发展的现状--正在被塑造;第二部分,讲述了新的盈利探索,即从贩卖产品到贩卖内容的转变,该部分以多个案例进行佐证,内容翔实;第三部分,......一起来看看 《新内容创业:我这样打造爆款IP》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码