使用 startsWith() 判斷是否以特定 String 開始

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

内容简介:實務上常須判斷 String 是否以特定 String 開始,這種常見的需求,該如何實現呢 ?macOS Mojave 10.14.5VS Code 1.35.1

實務上常須判斷 String 是否以特定 String 開始,這種常見的需求,該如何實現呢 ?

Version

macOS Mojave 10.14.5

VS Code 1.35.1

Quokka 1.0.233

Ramda 0.26.1

ECMAScript 5

let data = 'FP in JavaScript';

// startWith :: String -> String -> Boolean
let startsWith = search => str => str.substring(0, search.length) === search;

startsWith('FP')(data); // ?

最直覺的方式是透過內建的 String.prototype.substring() 取得部分 string 比較。

使用 startsWith() 判斷是否以特定 String 開始

let data = 'FP in JavaScript';

// startWith :: String -> String -> Boolean
let startsWith = search => str => str.slice(0, search.length) === search;

startsWith('FP')(data); // ?

也可以透過 String.prototype.slice() 回傳部分 string 比較。

使用 startsWith() 判斷是否以特定 String 開始

Regular Expression

let data = 'FP in JavaScript';

// startWith :: String -> String -> Boolean
let startsWith = search => str => new RegExp(`^${search}`).test(str);

startsWith('FP')(data); // ?

當然也可以透過 RegExp

使用 startsWith() 判斷是否以特定 String 開始

ECMAScript 2015

let data = 'FP in JavaScript';

// startWith :: String -> String -> Boolean
let startsWith = search => str => str.startsWith(search);

startsWith('FP')(data); // ?

ES6 新增了 String.prototype.startsWith() ,可直接進行比較,語意更佳。

Ramda

import { startsWith } from 'ramda';

let data = 'FP in JavaScript';

startsWith('FP')(data); // ?

事實上 Ramda 已經內建 startsWith() ,可直接使用。

startsWith()

String → String → Boolean

判斷 string 是否包含特定 string

String :要判斷的特定 string

String :data 為 string

Boolean :回傳判斷結果

使用 startsWith() 判斷是否以特定 String 開始

Array

import { startsWith } from 'ramda';

let data = [1, 2, 3];

startsWith([1, 2])(data); // ?

startsWith() 不只能用在 string,也能用在 array。

startsWith()

[a] → [a] → Boolean

判斷 array 是否包含特定 array

使用 startsWith() 判斷是否以特定 String 開始

Object

import { startsWith } from 'ramda';

let data = [
  { title: 'FP in JavaScript', price: 300 },
  { title: 'RxJS in Action', price: 400 },
  { title: 'Speaking JavaScript', price: 200 }
];

let searchArr = [
  { title: 'FP in JavaScript', price: 300 },
  { title: 'RxJS in Action', price: 400 },
];

startsWith(searchArr)(data); // ?

startsWith() 也能用在 object。

使用 startsWith() 判斷是否以特定 String 開始

Conclusion

  • startsWith() 大都用在 string,雖然也能用在 array
  • ES6 的 startsWith() 與 Ramda 的 startsWith() 功能相同,只是 ES6 為 OOP 風格,而 Ramda 為 FP 風格

Reference

Samantha Ming , String startsWith() Method in JavaScript

MDN , String.prototype.substring()

MDN , String.prototype.slice()

MDN , String.prototype.startsWith()

Ramda , startsWith()


以上所述就是小编给大家介绍的《使用 startsWith() 判斷是否以特定 String 開始》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Linux/Unix设计思想

Linux/Unix设计思想

甘卡兹 / 漆犇 / 人民邮电出版社 / 2012-3-28 / 39.00元

《Linux\Unix设计思想/图灵程序设计丛书》内容简介:将Linux的开发方式与Unix的原理有效地结合起来,总结出Linux与Unix软件开发中的设计原则。《Linux\Unix设计思想/图灵程序设计丛书》前8章分别介绍了Linux与Unix中9条基本的哲学准则和10条次要准则。第9章和第10章将Unix系统的设计思想与其他系统的设计思想进行了对比。最后介绍了Unix哲学准则在其他领域中的应......一起来看看 《Linux/Unix设计思想》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

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

HSV CMYK互换工具