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