我试图确定.filter()是如何工作的。
我想找到与提供的正则表达式匹配的那些元素,并构建一个newArray
而不是那些元素,但是那些在原始数组中紧跟它们的元素。
以下尝试有什么问题?
function searchNames( logins ){
var regex =/^\.|\.$/;
var newArray = logins.filter(function(el,idx,arr){
if (regex.test(el)) {
console.log('desired return value is '+arr[idx+1]);
return arr[idx + 1]; // but I get the original 'el' instead
}
});
console.log(newArray);
}
searchNames([ "foo", "foo@bar.com", "bar", "bar@foo.com", ".foo", "food@bar.com" ]);
网上没有这样的例子吗?我肯定找不到。
答案 0 :(得分:1)
您无法从回调中return
新数组中所需的元素。 filter
method确实需要布尔结果 当前元素是否应该在结果数组中。在你的情况下,那将是
var newArray = logins.filter(function(el,idx,arr){
return idx > 0 && regex.test(arr[idx-1]);
});