在JavaScript的數組中進行數組元素尋找和替換

來源:互聯網
上載者:User

JavaScript提供了在字串中尋找子串的函數indexOf()、lastIndexOf()、search(),還提供了字串的替換函數replace(),而這些函數沒有在數組對象Array中實現。

為了讓Array也支援以上方法,我修改了Array對象原型,增加了四個函數。這四個函數和String對象的四個相應的函數同名且文法相近,這裡不作過多介紹。
請看範例程式碼:
<html><br /><head><br /><title> Extend JavaScript Array Method </title><br /><script language="javascript"><br /><!--<br />Array.prototype.indexOf=function(substr,start){<br />var ta,rt,d='\0';<br />if(start!=null){ta=this.slice(start);rt=start;}else{ta=this;rt=0;}<br />var str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);<br />if(t==-1)return -1;rt+=str.slice(0,t).replace(/[^\0]/g,'').length;<br />return rt;<br />}</p><p>Array.prototype.lastIndexOf=function(substr,start){<br />var ta,rt,d='\0';<br />if(start!=null){ta=this.slice(start);rt=start;}else{ta=this;rt=0;}<br />ta=ta.reverse();var str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);<br />if(t==-1)return -1;rt+=str.slice(t).replace(/[^\0]/g,'').length-2;<br />return rt;<br />}</p><p>Array.prototype.replace=function(reg,rpby){<br />var ta=this.slice(0),d='\0';<br />var str=ta.join(d);str=str.replace(reg,rpby);<br />return str.split(d);<br />}</p><p>Array.prototype.search=function(reg){<br />var ta=this.slice(0),d='\0',str=d+ta.join(d)+d,regstr=reg.toString();<br />reg=new RegExp(regstr.replace(/\/((.|\n)+)\/.*/g,'\\0$1\\0'),regstr.slice(regstr.lastIndexOf('/')+1));<br />t=str.search(reg);if(t==-1)return -1;return str.slice(0,t).replace(/[^\0]/g,'').length;<br />}</p><p>window.onload=function(){<br />var a=new Array('aa1321321','b4323424b','cc345345','dd4654','dd4654','b4323424b');<br />document.getElementById('t1').value=a.toString();<br />document.getElementById('t2').value=a.indexOf('cc345345');<br />document.getElementById('t3').value=a.lastIndexOf('dd4654');<br />document.getElementById('t4').value=a.replace(/\d/g,'*');<br />document.getElementById('t5').value=a.search(/dd4654/);<br />};<br />//--><br /></script><br /><style type="text/css"><br /><!--<br />input{width:600px}<br />//--><br /></style><br /></head></p><p><body><br /><table><br /><tr><td>數組a:</td><td><input id="t1" type="text" /></td></tr><br /><tr><td>a.indexOf('cc345345'):</td><td><input id="t2" type="text" /></td></tr><br /><tr><td>a.lastIndexOf('dd4654'):</td><td><input id="t3" type="text" /></td></tr><br /><tr><td>a.replace(/\d/g,'*'):</td><td><input id="t4" type="text" /></td></tr><br /><tr><td>a.search(/dd4654/):</td><td><input id="t5" type="text" /></td></tr><br /></table><br /></body><br /></html><br />

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.