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