JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析

发布时间 - 2026-01-10 22:05:43    点击率:

本文实例讲述了JS常见疑难点分析之match,charAt,charCodeAt,map,search用法。分享给大家供大家参考,具体如下:

JavaScript match() 方法

定义和用法

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

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

语法

匹配字符串,返回指定的值

stringObject.match(searchvalue)

匹配正则,返回指定的值

stringObject.match(regexp)

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

<html>
<body>
<script type="text/javascript">
var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World") + "<br />")
document.write(str.match("worlld") + "<br />")
document.write(str.match("world!"))
</script>
</body>
</html>

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

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

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

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

JavaScript search() 方法

定义和用法

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

语法

stringObject.search(regexp)

该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。

要执行忽略大小写的检索,请追加标志 i。

search() 例子:

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

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

JavaScript charAt() 方法

定义和用法

charAt() 方法可返回指定位置的字符。

请注意,JavaScript 并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串。

语法

返回指定位置的字符串

stringObject.charAt(index)

chartAt实例:

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

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

JavaScript charCodeAt() 方法

定义和用法

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

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

语法

stringObject.charCodeAt(index)

charCodeAt()实例

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

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

js中Array.prototype.map()方法

定义和用法

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

语法

array.map(callback[, thisArg])

callback原数组中的元素经过该方法后返回一个新的元素。
currentValue,callback 的第一个参数,数组中当前被传递的元素。
index,callback 的第二个参数,数组中当前被传递的元素的索引。
array,callback 的第三个参数,调用 map 方法的数组。
thisArg执行 callback 函数时 this 指向的对象。

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

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

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

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

function fuzzyPlural(single) {
 var result = single.replace(/o/g, 'e');
 if( single === 'kangaroo'){
  result += 'se';
 }
 return result;
}
var words = ["foot", "goose", "moose", "kangaroo"];
console.log(words.map(fuzzyPlural));

最后结果:

["feet", "geese", "meese", "kangareese"]

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

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

在字符串上使用 map 方法

var map = Array.prototype.map
var a = map.call("Hello World", function(x) { return x.charCodeAt(0); })
// a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

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

map兼容旧环境

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

// 实现 ECMA-262, Edition 5, 15.4.4.19
// 参考: http://es5.github.com/#x15.4.4.19
if (!Array.prototype.map) {
 Array.prototype.map = function(callback, thisArg) {
  var T, A, k;
  if (this == null) {
   throw new TypeError(" this is null or not defined");
  }
  // 1. 将O赋值为调用map方法的数组.
  var O = Object(this);
  // 2.将len赋值为数组O的长度.
  var len = O.length >>> 0;
  // 4.如果callback不是函数,则抛出TypeError异常.
  if ({}.toString.call(callback) != "[object Function]") {
   throw new TypeError(callback + " is not a function");
  }
  // 5. 如果参数thisArg有值,则将T赋值为thisArg;否则T为undefined.
  if (thisArg) {
   T = thisArg;
  }
  // 6. 创建新数组A,长度为原数组O长度len
  A = new Array(len);
  // 7. 将k赋值为0
  k = 0;
  // 8. 当 k < len 时,执行循环.
  while(k < len) {
   var kValue, mappedValue;
   //遍历O,k为原数组索引
   if (k in O) {
    //kValue为索引k对应的值.
    kValue = O[ k ];
    // 执行callback,this指向T,参数有三个.分别是kValue:值,k:索引,O:原数组.
    mappedValue = callback.call(T, kValue, k, O);
    // 返回值添加到新书组A中.
    A[ k ] = mappedValue;
   }
   // k自增1
   k++;
  }
  // 9. 返回新数组A
  return A;
 };
}

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

第一种方式

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();

PS:这里再提供几款相关的加密与正则工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools./regex/javascript

正则表达式在线生成工具:
http://tools./regex/create_reg

BASE64编码解码工具:
http://tools./transcoding/base64

URL网址16进制加密工具:
http://tools./password/urlencodepwd

MD5在线加密工具:
http://tools./password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools./password/hash_encrypt

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# JS  # match  # charAt  # charCodeAt  # map  # search  # Javascript技术难点之apply  # call与this之间的衔接  # javascript下数值型比较难点说明  # 初学js 新节点的创建 删除 的步骤  # 初学JavaScript_03(ExtJs Grid的简单使用)  # 初学js者对javascript面向对象的认识分析  # 国外的为初学者写的JavaScript教程  # 走出JavaScript初学困境—js初学  # 初学JavaScript第一章  # JavaScript初学者的10个迷你技巧  # 你有必要知道的10个JavaScript难点  # 值为  # 组中  # 第一个  # 正则表达式  # 返回值  # 的是  # 遍历  # 加密工具  # 可以达到  # 长度为  # 他们的  # 就会  # 是在  # 相关内容  # 你可以  # 多个  # 可以用  # 会在  # 从来没  # 我们可以 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Linux安全能力提升路径_长期防护思维说明【指导】  js代码实现下拉菜单【推荐】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  用v-html解决Vue.js渲染中html标签不被解析的问题  ,交易猫的商品怎么发布到网站上去?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何快速选择适合个人网站的云服务器配置?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  重庆市网站制作公司,重庆招聘网站哪个好?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  java中使用zxing批量生成二维码立牌  iOS中将个别页面强制横屏其他页面竖屏  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  如何基于PHP生成高效IDC网络公司建站源码?  如何选择可靠的免备案建站服务器?  C#如何调用原生C++ COM对象详解  Laravel如何实现模型的全局作用域?(Global Scope示例)  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  香港服务器建站指南:免备案优势与SEO优化技巧全解析  深圳网站制作培训,深圳哪些招聘网站比较好?  原生JS获取元素集合的子元素宽度实例  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  iOS UIView常见属性方法小结  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何选择PHP开源工具快速搭建网站?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何与Pusher实现实时通信?(WebSocket示例)  企业网站制作这些问题要关注  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  如何快速建站并高效导出源代码?  浅述节点的创建及常见功能的实现  b2c电商网站制作流程,b2c水平综合的电商平台?  微信小程序 require机制详解及实例代码  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何获取PHP WAP自助建站系统源码?  如何在腾讯云服务器上快速搭建个人网站?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何挑选高效建站主机与优质域名?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】