有人今天问了一个问题,想要从数组中选择从I到数组末尾的某些元素,这让我想知道如何用filter
方法做到这一点。
有人给出的解决方案之一是使用slice
,我知道你能够从索引到索引进行选择,但是你如何实现filter
方法来做同样的事情呢?
例
let arr = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'];
let newArr = arr.filter(element => element >= element.indexOf(3));
console.log(newArr);
这是我提出的,它不起作用,但想法是选择索引为3或更大的所有字符串并将它们返回到另一个数组。
运行时将索引传递给过滤器回调:
let newArr = arr.filter((element, index) => index >= 3);
在性能方面你仍然在制作一个新阵列并复制值,所以它与.slice()
大致相同。
当您访问每个项目时,您可以使用计数器并递减计数器直到计数器达到零。然后取这个值。
const
fromIndex = i => _ => !i || !i--,
array = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'],
result = array.filter(fromIndex(3));
console.log(result);
您应该使用筛选条件创建一个函数:
let arr = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'];
function filterCriteria(item) {
return item >= someValue;
}
function someFunction() {
return arr.filter(filterCriteria);
}
“someFunction”将返回已过滤的数组
过滤器回调中的第二个参数是index。所以你可以做这样的事情
arr.filter((element,index)=> index> = 3);