选择数组中的项目-Javascript-使用筛选方法

时间:2019-04-25 19:40:09

标签: javascript arrays filter indexof

今天有人问一个问题,要弄清楚从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或更大的所有字符串,然后将它们返回到另一个数组中。

4 个答案:

答案 0 :(得分:4)

运行时将索引传递给过滤器回调:

let newArr = arr.filter((element, index) => index >= 3);

在性能方面,您仍在创建一个新数组并复制值,因此它与.slice()相同。

答案 1 :(得分:2)

在访问每个项目时,可以使用一个计数器并将其递减直到计数器达到零。然后取这些值。

const
    fromIndex = i => _ => !i || !i--,
    array = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'],
    result = array.filter(fromIndex(3));

console.log(result);

答案 2 :(得分:1)

您应该使用过滤条件创建一个函数:

let arr = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'];

function filterCriteria(item) {
  return item >= someValue;
}

function someFunction() {
  return arr.filter(filterCriteria);
}

“ someFunction”将返回已过滤的数组

答案 3 :(得分:1)

过滤器回调中的第二个参数是索引。所以你可以做这样的事情

arr.filter((element,index)=>索引> = 3);