来源:http://blog.iyi.cn/hily/archives/2005/10/javascript_3.html
JavaScript提供了在字符串中查找子串的函数indexOf()、lastIndexOf()、search(),还提供了字符串的替换函数replace(),而这些函数没有在数组对象Array中实现。
为了让Array也支持以上方法,我修改了Array对象原型,增加了四个函数。这四个函数和String对象的四个相应的函数同名且语法相近,这里不作过多介绍。
请看示例代码:
<html>
<head>
<title> Extend JavaScript Array Method </title>
<script language="javascript">
<!--
Array.prototype.indexOf=function(substr,start){
var ta,rt,d='\0';
if(start!=null){ta=this.slice(start);rt=start;}else{ta=this;rt=0;}
var str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);
if(t==-1)return -1;rt+=str.slice(0,t).replace(/[^\0]/g,'').length;
return rt;
}
Array.prototype.lastIndexOf=function(substr,start){
var ta,rt,d='\0';
if(start!=null){ta=this.slice(start);rt=start;}else{ta=this.slice(0);rt=0;} // 原文红色部分为'this'
ta=ta.reverse();var str=d+ta.join(d)+d,t=str.indexOf(d+substr+d); // 会导致数组逆序
if(t==-1)return -1;rt+=str.slice(t).replace(/[^\0]/g,'').length-2;
return rt;
}
Array.prototype.replace=function(reg,rpby){
var ta=this.slice(0),d='\0';
var str=ta.join(d);str=str.replace(reg,rpby);
return str.split(d);
}
Array.prototype.search=function(reg){
var ta=this.slice(0),d='\0',str=d+ta.join(d)+d,regstr=reg.toString();
reg=new RegExp(regstr.replace(/\/((.|\n)+)\/.*/g,'\\0$1\\0'),regstr.slice(regstr.lastIndexOf('/')+1));
t=str.search(reg);if(t==-1)return -1;return str.slice(0,t).replace(/[^\0]/g,'').length;
}
window.onload=function(){
var a=new Array('aa1321321','b4323424b','cc345345','dd4654','dd4654','b4323424b');
document.getElementById('t1').value=a.toString();
document.getElementById('t2').value=a.indexOf('cc345345');
document.getElementById('t3').value=a.lastIndexOf('dd4654');
document.getElementById('t4').value=a.replace(/\d/g,'*');
document.getElementById('t5').value=a.search(/dd4654/);
};
//-->
</script>
<style type="text/css">
<!--
input{width:600px}
//-->
</style>
</head>
<body>
<table>
<tr><td>数组a:</td><td><input id="t1" type="text" /></td></tr>
<tr><td>a.indexOf('cc345345'):</td><td><input id="t2" type="text" /></td></tr>
<tr><td>a.lastIndexOf('dd4654'):</td><td><input id="t3" type="text" /></td></tr>
<tr><td>a.replace(/\d/g,'*'):</td><td><input id="t4" type="text" /></td></tr>
<tr><td>a.search(/dd4654/):</td><td><input id="t5" type="text" /></td></tr>
</table>
</body>
</html>
分享到:
相关推荐
其核心思想是,遍历数组b中的每一个元素,再分别在数组a中查找是否有与之相同的元素,如果找到,则将这个元素从数组a中删除。这个过程需要特别注意的是,每次从数组a中删除一个元素后,其后面的元素会向前移动,因此...
JavaScript数组支持多种操作方法,如`push`(在末尾添加元素)、`pop`(移除并返回末尾元素)、`shift`(移除并返回首位元素)、`unshift`(在首位添加元素)、`slice`(截取子数组)、`splice`(插入、删除或替换...
这些扩展方法的实现展示出了JavaScript数组的强大功能,利用这些功能,我们可以在不改变原数组的基础上进行灵活的操作,比如查找和替换元素,这对于处理数据集合提供了极大的方便。然而,实际开发中一般会推荐使用...
首先,我们需要了解如何通过`Array.prototype.indexOf`方法来查找数组中元素的索引位置。这个方法接受一个参数,遍历数组寻找第一个与该参数相等的元素。如果找到了,就会返回这个元素的索引;如果没有找到,就会...
`splice` 方法可以修改现有数组,通过删除、替换或添加新的元素。它接受至少两个参数:第一个参数是起始索引位置,第二个参数是要删除的元素数量。之后还可以添加任意数量的参数作为新插入的元素。 ```javascript ...
在JavaScript编程中,经常需要检查数组中是否包含重复的元素。这在处理数据时尤其重要,例如在创建不允许重复的用户列表,或者是在查找数组中的唯一元素时。根据给定文件的内容,我们可以总结出一些判断数组中是否...
**问题描述**:需要对数组中的每个元素执行某个函数,如果满足给定条件则替换元素。 **解决方案**:使用 ECMAScript 5 中的 `Array.forEach()` 方法。该方法接受一个回调函数作为参数,此函数会被应用到数组中的每...
这种方法避免了字符串操作和排序,直接在数组层面进行处理。 ```javascript var a = ["span", "span", "strong", "span", "b"]; function noRepeat(a) { var i = a.length, j, b; while (i--) { j = i; b = ...
如果找到,再利用正则表达式替换匹配项并在结果中查找@符号的下标,从而获取元素的原始下标。这种方法避免了循环遍历,但在数组元素较多或包含复杂对象时,转换为字符串可能会带来额外开销。时间复杂度为O(n),但...
- **《JavaScript数组操作技巧总结》**:涵盖数组的创建、遍历、合并、排序、过滤等多种操作。 - **《JavaScript字符与字符串操作技巧总结》**:涉及字符串的拼接、截取、查找、替换等方法。 - **《JavaScript...
数组提供了多种方法来操作和处理数组元素,这些方法可以分为以下几类:添加元素、删除元素、排序、查找、转换等。 1. 添加元素 JavaScript 数组提供了多种方法来添加元素,包括 `push`、`unshift`、`splice` 等。 ...
理解和熟练掌握这些JavaScript数组方法对于进行有效的数据处理和操作至关重要。在实际编程中,根据需求选择合适的方法可以极大地提高代码效率和可读性。在处理大型数据集时,应特别注意某些方法(如`unshift()`和`...
### JavaScript:数组与字符串操作教程 #### 一、变量与数据类型 在JavaScript中,变量是...通过具体示例,加深了对JavaScript数组和字符串处理的理解。掌握了这些基本知识后,可以更灵活地处理实际项目中的数据。
同时,标签中提到的"源码"和"工具"可能意味着该资源可能会提供一些实际代码示例或实用的工具函数来帮助理解和操作JavaScript数组。 了解和掌握这些操作是提升JavaScript编程能力的关键步骤,它们在日常编程任务中...
`splice()`是JavaScript数组的一个内置方法,它允许我们在数组中添加或删除元素。对于删除操作,`splice(index, count)`接受两个参数:`index`是元素的索引位置,`count`是要删除的元素数量。例如: ```javascript...
本篇将深入探讨JavaScript数组的一些关键特性和用法,通过分析`TestArray.html`、`TestArray2.html`、`TestArray3.html`中的代码示例,我们可以更全面地理解这些知识点。 ### 1. 创建数组 创建数组有两种常见方法:...
4. **字符串查找与替换**:实现查找特定子串在字符串中的位置,或者替换字符串中的某些部分。可以学习KMP算法或Boyer-Moore算法等高级搜索技术。 5. **字符编码**:理解ASCII码、Unicode和UTF-8等字符编码体系,...
当我们处理数组时,经常需要根据需求对其中的元素进行操作,比如插入、查找和删除等。本篇文章将详细探讨“数组数据删除”这一主题,特别是如何从数组中删除指定的字符,包括重复的字符。 首先,我们要理解数组的...
- reverse:将数组中元素的顺序颠倒。 - sort:对数组元素进行排序,可以传入一个比较函数来实现自定义的排序逻辑。 3. 合并与连接 - concat:连接两个或多个数组,此操作不会改变现有的数组,而是返回一个新...