有一个多维数组,我想过滤它,所以只有有一个以下划线'_'结尾的词的数组被留下。我已经使用循环完成了这个任务。
function searchNames( logins ){
var arr = logins;
var reg = /w+_b/;
var newAr = [];
for(var i = 0; i < arr.length; i++) {
for(var x = 0; x < arr[i].length; x++){
if(arr[i][x].match(reg)){
newAr.push(arr[i])
}
}
}
return newAr;
}
是否有办法做到同样的使用Array.prototype.filter()方法。根据MDN参考(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)你可以做类似的事情,但我不知道如何过滤数组内的数组。我尝试在另一个过滤器方法中使用过滤器方法的所有尝试都失败了
给filter方法传递一个有用的block:
array = [["hello_","cat"],["dog","dog"]];
arrayTest = function(arr){
resp = false;
arr.forEach(function(str){
if(str.slice(-1) === "_") resp = true;
});
return resp;
}
result = array.filter(arrayTest);
或者如果你真的嫁给了你的正则表达式:
array = [["hello_","cat"],["dog","dog"]];
regex = /w+_b/;
arrayTest = function(arr){
resp = false;
arr.forEach(function(str){
if(str.match(regex)) resp = true;
});
return resp;
}
result = array.filter(arrayTest);
你似乎想
var newArr = arr.filter(subArr => subArr.some(e=>/w+_b/.test(e)));