JavaScript match() 方法

定义和用法

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

  1. 语法
  2. //匹配字符串,返回指定的值
  3. stringObject.match(searchvalue)
  4. //匹配正则,返回指定的值
  5. stringObject.match(regexp)

使用 match() 来检索一个字符串例子:

  1. <html>
  2. <body>
  3. <script type="text/javascript">
  4. var str="Hello world!"
  5. document.write(str.match("world") + "<br />")
  6. document.write(str.match("World") + "<br />")
  7. document.write(str.match("worlld") + "<br />")
  8. document.write(str.match("world!"))
  9. </script>
  10. </body>
  11. </html>

最终出现的结果为,world,null,null,world!

使用 match() 来检索一个正则表达式的匹配例子:

  1. <html>
  2. <body>
  3. <script type="text/javascript">
  4. var str="1 plus 2 equal 3";
  5. //这里的正则表达式必须加上g,全局匹配,不然就会匹配一个值即返回
  6. document.write(str.match(/\d+/g))
  7. </script>
  8. </body>
  9. </html>

通常来说,我们用match用在正则上面比较多,也可以用其来代理indexOf和lastIndexOf来判断字符串里面是否存在此值。

JavaScript search() 方法

定义和用法

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,检索到则返回匹配的子串的起始位置,无法检索到值,返回-1。

  1. 语法
  2. stringObject.search(regexp)
  3. //该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。
  4. //要执行忽略大小写的检索,请追加标志 i。

复制代码

search() 例子:

  1. <script type="text/javascript">
  2. var str="Visit W3School!"
  3. document.write(str.search(/W3School/))
  4. </script>

返回索引值为6,search通常与正则配合使用,可以达到indexOf的效果。

JavaScript charAt() 方法

定义和用法

charAt() 方法可返回指定位置的字符。
        
        请注意,JavaScript 并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串。

  1. 语法
  2. //返回指定位置的字符串
  3. stringObject.charAt(index)

chartAt实例:

  1. <script type="text/javascript">
  2. var str="Hello world!"
  3. document.write(str.charAt(1))
  4. </script>

最终返回结果为:e,通常我们可以通过chartAt来从某个字符串取得具体的字符。

JavaScript charCodeAt() 方法

定义和用法

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。

  1. 语法
  2. stringObject.charCodeAt(index)

charCodeAt()实例

注释:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。

  1. <script type="text/javascript">
  2. var str="Hello world!"
  3. document.write(str.charCodeAt(1))
  4. //返回H的Unicode 编码101
  5. </script>

js中Array.prototype.map()方法

定义和用法

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

  1. 语法
  2. array.map(callback[, thisArg])
  3. //callback原数组中的元素经过该方法后返回一个新的元素。
  4. //currentValue,callback 的第一个参数,数组中当前被传递的元素。
  5. //index,callback 的第二个参数,数组中当前被传递的元素的索引。
  6. //array,callback 的第三个参数,调用 map 方法的数组。
  7. //thisArg执行 callback 函数时 this 指向的对象。

map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值组合起来形成一个新数组。 callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用

delete 删除的索引则不会被调用。callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。

使用map()的第一个例子:

下面的代码将一个数组中的所有单词转换成对应的复数形式.

  1. function fuzzyPlural(single) {
  2. var result = single.replace(/o/g, 'e');
  3. if( single === 'kangaroo'){
  4. result += 'se';
  5. }
  6. return result;
  7. }
  8. var words = ["foot", "goose", "moose", "kangaroo"];
  9. console.log(words.map(fuzzyPlural));
  10. //最后结果 ["feet", "geese", "meese", "kangareese"]
 

求数组中每个元素的平方根例子

  1. var numbers = [1, 4, 9];
  2. var roots = numbers.map(Math.sqrt);
  3. /* roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9] */

在字符串上使用 map 方法

  1. var map = Array.prototype.map
  2. var a = map.call("Hello World", function(x) { return x.charCodeAt(0); })
  3. // a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
  1. <!DOCTYPE HTML>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. //var map = Array.prototype.map
  10. var a = Array.prototype.map.call("Hello World", function(x) { return x.charCodeAt(0); })
  11. // a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
  12. alert(a);
  13. </script>
  14. </body>
  15. </html>

map兼容旧环境

map 是在最近的 ECMA-262 标准中新添加的方法;所以一些旧版本的浏览器可能没有实现该方法。在那些没有原生支持 map 方法的浏览器中,你可以使用下面的 Javascript 代码来实现它。所使用的
算法正是 ECMA-262,第 5 版规定的。假定Object, TypeError, 和 Array 有他们的原始值。而且 callback.call 的原始值也是 Function.prototype.call。

  1. // 实现 ECMA-262, Edition 5, 15.4.4.19
  2. // 参考: http://es5.github.com/#x15.4.4.19
  3. if (!Array.prototype.map) {
  4. Array.prototype.map = function(callback, thisArg) {
  5. var T, A, k;
  6. if (this == null) {
  7. throw new TypeError(" this is null or not defined");
  8. }
  9. // 1. 将O赋值为调用map方法的数组.
  10. var O = Object(this);
  11. // 2.将len赋值为数组O的长度.
  12. var len = O.length >>> 0;
  13. // 4.如果callback不是函数,则抛出TypeError异常.
  14. if ({}.toString.call(callback) != "[object Function]") {
  15. throw new TypeError(callback + " is not a function");
  16. }
  17. // 5. 如果参数thisArg有值,则将T赋值为thisArg;否则T为undefined.
  18. if (thisArg) {
  19. T = thisArg;
  20. }
  21. // 6. 创建新数组A,长度为原数组O长度len
  22. A = new Array(len);
  23. // 7. 将k赋值为0
  24. k = 0;
  25. // 8. 当 k < len 时,执行循环.
  26. while(k < len) {
  27. var kValue, mappedValue;
  28. //遍历O,k为原数组索引
  29. if (k in O) {
  30. //kValue为索引k对应的值.
  31. kValue = O[ k ];
  32. // 执行callback,this指向T,参数有三个.分别是kValue:值,k:索引,O:原数组.
  33. mappedValue = callback.call(T, kValue, k, O);
  34. // 返回值添加到新书组A中.
  35. A[ k ] = mappedValue;
  36. }
  37. // k自增1
  38. k++;
  39. }
  40. // 9. 返回新数组A
  41. return A;
  42. };
  43. }

  通常生成时间戳的巧妙方法

//第一种方式
function getTimeStamp()
{
var timestamp=new Date().getTime();
var timestampstring = timestamp.toString();//一定要转换字符串
oldTimeStamp = timestampstring;
return timestampstring;
} 第二种方式
new Date().toString() //同样可以达到效果,更简洁

  

  如何使用md5加密方法:

  引用google,md5加密的库文件:http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js

  其实蛮简单的,里面CryptoJS.SHA1(),直接引用加密即可,举个栗子:

 //就这样直接调用就可以了  
var keyvaluestring = "ddddd";
sign = CryptoJS.SHA1(keyvaluestring).toString();

常见的几个js疑难点,match,charAt,charCodeAt,map,search的更多相关文章

  1. 说说常见的几个js疑难点

    JavaScript match() 方法 定义和使用方法 match() 方法可在字符串内检索指定的值,或找到一个或多个正則表達式的匹配. 该方法类似 indexOf() 和 lastIndexOf ...

  2. JS疑难点和GC原理

    js解析与序列化json数据(一)json.stringify()的基本用法: 对象有两个方法:stringify()和parse().在最简单的情况下,这两个方法分别用于把JavaScript对象序 ...

  3. 常见排序算法(JS版)

    常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...

  4. js 定义像java一样的map方便取值【转】

    js 定义像java一样的map方便取值.  百度有位大神说"js对象本身就是一种Map结构",这真是一段让人欢天喜地的代码. <script> //定义一个全局map ...

  5. python爬虫笔记之re.match匹配,与search、findall区别

    为什么re.match匹配不到?re.match匹配规则怎样?(捕一下seo) re.match(pattern, string[, flags]) pattern为匹配规则,即输入正则表达式. st ...

  6. finereport---FineReport入门常见疑难点

    一.入门介绍 二.入门需知 注意:开发人员可以设置DEBUG级别,有助于测试 三.数据准备 数据集sql中可以使用参数宏${}动态地生成过滤条件,${}中的语句在FineReport报表中执行,将${ ...

  7. 常见开发需求之js处理url汉字编码中的乱码

    需求及解决    两个页面传值的需求是很常见的,angular中有很多常见的方法用于传值,而且都不会受到字符编码的影响,而采用传统的url中拼字符串进行传值的操作,如果拼串中涉及到中文字符,我们就要考 ...

  8. 常见排序算法基于JS的实现

    一:冒泡排序 1. 原理 a. 从头开始比较相邻的两个待排序元素,如果前面元素大于后面元素,就将二个元素位置互换 b. 这样对序列的第0个元素到n-1个元素进行一次遍历后,最大的一个元素就“沉”到序列 ...

  9. JS中的match和test正则表达式验证密码或用户名的一种规则

    match语法:字符串.match(正则表达式)有符合的:返回符合的数组无符合的:返回null test语法:正则表达式.test(字符串)有符合的:返回true无符合的 :返回false 该文的密码 ...

随机推荐

  1. 1. 自动化运维系列之Cobbler自动装机

    preface 我们之前批量安装操作系统的时候都是采用pxe来安装,pxe也是通过网络安装操作系统的,但是PXE依赖于DHCP,HTTP/TFTP,kicstart等支持.安装流程如下所示: 对于上面 ...

  2. Win7 共享打印机 “错误:共享无法保存设置”

    原因:windows的后台防火墙服务进程[Windows Firewall{服务描述}.MpsSvc{服务名字}] 关闭了.services.smc 关闭 解决:重启服务 关闭防火墙的功能,通过控制面 ...

  3. Gridview、DataList、Repeater获取行索引号

    Gridview.DataList.Repeater如何获取行索引号?很多情况下都会用得到,下面贴出代码,注意行索引号是从0开始,不是从1开始,如果要从1开始,请在代码里面+1就行了. Gridvie ...

  4. MongoDB的php可视化管理工具

    使用MongoDB命令查看很不方便 于是想把爬来的数据导出来,看爬来的数据是否正确 打开cmd,执行 mongoexport -d test -c blogs --csv -f title,link, ...

  5. redis的有序集合ZSET(stored set)

    相关命令 1.ZADD ZADD key-name score member [score member……] 将带有给定分值的成员添加到有序集合里 2.ZREM ZREM  key-name mem ...

  6. springMVC中如何访问WebContent中的资源文件

    一.问题: 我的工程目录如下: WebContent |-css |-js |-imgs |-META-INF |-WEB-INF |-jsp |-login.jsp 如何在login.jsp中引用i ...

  7. 协助CIO成功实施ITIL

    如今,企业在日渐复杂的IT基础架构和应用服务上所做出的投资越来越庞大.有数据显示,财富500强在IT上的平均开支已达到了3亿5千万美元. 为了清楚地认识IT投资所能带来的价值,企业应考虑改善服务管理流 ...

  8. Linux命令缩写的全称

    [目录|文件] ls : list(列出目录内容) pwd : print work directory(打印当前目录,现示当前工作目录的绝对路径) cd : change directory(改变目 ...

  9. Spring IOC-ContextLoaderListener

    [spring version : 4.1.6.RELEASE] 使用spring的项目中,一般都会在web.xml中配置ContextLoaderListener,它就是spring ioc 的入口 ...

  10. Java -- 异常的捕获及处理 -- Exception类与RuntimeException类

    7.3 Exception类与RuntimeException类 Exception类与RuntimeException类的联系与区别??? 例:字符串变为整型 Class : RuntimeExce ...