//test 1 - using join/split var arr = [], x = 1000; while (x--) {arr.push("ba" + x);} var beheadMembers = function(arr, regex) { return arr.join().split(regex).slice(1); } var regex = RegExp("[,]?" + 'ba'); var timer = +new Date, y = 1000; while(y--) {beheadMembers(arr,regex);}; +new Date - timer; //FF 3.6 733ms //Ch 7 464ms //Sa 5 701ms //IE 8 1256ms //test 2 - using native map function var arr = [], x = 1000; while (x--) {arr.push("ba" + x);} var timer = +new Date, y = 1000; while(y--) { arr.map(function(e) { return e.replace('ba','') }); } +new Date - timer; //FF 3.6 2051ms //Cr 7 732ms //Sf 5 1520ms //IE 8 (Not supported)
模式匹配
数组需要不断的去执行模式匹配,但是字符串不会。正则表达式能在字符串中运用,但是在数组中不会。把数组转为字符串用于模式匹配的强悍之处远远超越这篇文章讲述的范围。让我们来看看它的一个简单应用。
假设竞走的比赛结果需要保存到数组中。目的就是将竞赛者与他们的记录时间交替的放在数组中。我们可以用join与正则表达式来验证这种存储模式是否正确。下面的代码就是通过查找两个连续的名字来找出记录时间被漏掉的情况。
var results = ['sunil', '23:09', 'bob', '22:09', 'carlos', 'mary', '22:59']; var badData = results.join(',').match(/[a-zA-Z]+,[a-zA-Z]+/g); badData; //["carlos,mary"]
您可能感兴趣的文章: