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

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


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

查看所有标签

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

Web Design Handbook

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》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具