gpt4 book ai didi

Javascript - 创建一个新的数组方法

转载 作者:行者123 更新时间:2023-11-28 12:45:47 25 4
gpt4 key购买 nike

我想通过添加一个新方法来扩展 Javascript 内置数组对象:searchByRegexp

基本上该方法将获取正则表达式作为输入并返回:
_ 表示与正则表达式匹配的数组元素的字符串(如果多个匹配,将返回第一个)
_ 如果没有元素与正则表达式匹配,则为空字符串。

最佳答案

快速而肮脏(fiddle for your fiddling pleasure):

Array.prototype.searchByRegexp = function (rx) {
for(var i = 0, ln = this.length; i < ln; i++) {
// test item i
if(rx.test(this[i])) {
return this[i] + "";
}
}
// return an empty string if no matches are found
return "";
}

但是,您可能希望实现 more general methods相反...

Array.prototype.find = function(delegate) {   
for(var i = 0, ln = this.length; i < ln; i++) {
if(delegate(this[i])){
return this[i];
}
}
return null;
}

Array.prototype.findAll = function(delegate) {
var results = [];
for(var i = 0, ln = this.length; i < ln; i++) {
if(delegate(this[i])){
results.push(this[i]);
}
}
return results ;
}

Array.prototype.each = function (delegate) {
for (var i = 0, ln = this.length; i < ln; i++) {
delegate(this[i], i);
}
}

...然后可以像这样执行正则表达式比较:

// test values
var sizes = ["Small", "Medium", "Large", "Extra-Large", "Extra-Extra-Large"];

// Print single value or blank
document.write(sizes.find(function(size){
return /large/i.test(size);
}) || "");

// horizontal rule to separate our results
document.write("<hr/>");

// Print all matches
sizes.findAll(function(size){
return /large/i.test(size);
}).each(function(size){
document.write(size + "<br/>");
});

关于Javascript - 创建一个新的数组方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7730632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com