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


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

查看所有标签

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

彩色UML建模

彩色UML建模

Peter Coad、Eric Lefebvre、Jeff De Luca / 王海鹏 / 2008-12 / 55.00元

本书系统地介绍了如何运用彩色来构建UML模型,书中使用4种颜色来代表4种架构型,给定一种颜色,您就知道这个类可能具有哪些属性、链接、方法和交互,从而得到一些彩色的构建块。本书包含6章展示61个领域所需的相关组件,本书讲解详细,实例丰富,展示了61个组件、283个类、46个接口、671个属性、1139个方法和65个交互序列图。. 本书可作为UML建模人员、Java工程师、技术人员的参考用书。 ......一起来看看 《彩色UML建模》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具