.filter() - 如何正确使用val,arr和idx参数的示例?

时间:2014-06-28 17:49:10

标签: javascript

我试图确定.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" ]);

网上没有这样的例子吗?我肯定找不到。

1 个答案:

答案 0 :(得分:1)

您无法从回调中return新数组中所需的元素。 filter method确实需要布尔结果 当前元素是否应该在结果数组中。在你的情况下,那将是

var newArray = logins.filter(function(el,idx,arr){
    return idx > 0 && regex.test(arr[idx-1]);
});