1
我试图确定.filter()如何工作。.filter() - 如何正确使用val,arr和idx参数的例子?
我想找到那些符合所提供的正则表达式的元素,并建立一个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", "[email protected]", "bar", "[email protected]", ".foo", "[email protected]" ]);
有没有网上的例子像这样?我当然找不到一个。
你想要做的不是真正的'.filter()'最好的应用程序。 JavaScript没有'.partition()'方法,但这将是一个很好的第一遍:组值对,以便您可以使用一组数组。然后,'.filter()'很容易。 – Pointy
哦,你的代码的问题是'.filter()'期望回调函数只返回'true'或'false';它不会使用这些值来构建新的数组。这就是'.map()'所做的。 – Pointy
我会使用.map(),但赋值要求使用.filter()...发现可以使用&&根据相邻元素的属性有条件地返回所需的元素idx和arr)。聪明的东西。 – dwilbank