![](/img/trans.png)
[英]Is `if (idx < arr.length)` equivalent to `if (arr[idx])`?
[英].filter() - example of how to use the val, arr and idx arguments properly?
我正在尝试确定.filter()的工作方式。
我想找到与提供的正则表达式匹配的那些元素,并构建一个newArray
而不是这些元素,而是构建一个在原始数组中紧随其后的元素的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" ]);
网上没有这样的例子吗? 我确定找不到。
您无法通过回调在新数组中return
所需的元素。 无论当前元素是否应在结果数组中, filter
方法都期望布尔结果 。 在你的情况下,那将是
var newArray = logins.filter(function(el,idx,arr){
return idx > 0 && regex.test(arr[idx-1]);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.