如何將 String 前後顛倒 ?

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

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


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

查看所有标签

猜你喜欢:

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

Jakarta Struts Cookbook中文版

Jakarta Struts Cookbook中文版

斯格科 / 清华大学 / 2007-7 / 56.00元

Jakarta Struts Cookbook(中文版),ISBN:9787302155638,作者:(美)斯格科一起来看看 《Jakarta Struts Cookbook中文版》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

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

HSV CMYK互换工具