【问题标题】:how to filter an array by index which is given as an array [duplicate]如何按作为数组给出的索引过滤数组[重复]
【发布时间】:2021-09-20 07:37:32
【问题描述】:

我想通过索引过滤这个数组?

arr = [1,2,3,4,5,6];

我正在尝试使用

arr.filter(x => x === [2,3])

但它似乎不起作用?

我只想要 [2, 3]rd 索引?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你需要map而不是filter

    arr = [11,22,33,44,55,66];
    indexes = [2,3]
    result = indexes.map(i => arr[i])
    console.log(result)

    请注意,这会以indexes 顺序返回值,但如果indexes 未排序并且您需要源顺序中的值,那么您确实需要filter。考虑:

    arr = [11,22,33,44,55,66];
    indexes = [4,2]
    
    result1 = indexes.map(i => arr[i])
    result2 = arr.filter((_,i) => indexes.includes(i))
    
    console.log(result1)
    console.log(result2)

    【讨论】:

    • 唯一没有被OP使用filter误导的答案,产生了一个非常明显和干净的解决方案。
    • @Cerbrus:它们实际上是不同的,取决于 OP 到底想要什么。
    • 考虑到简单的示例数据,我怀疑排序是否重要,但没关系。 (即便如此,如果排序很重要,只排序索引数组然后map 可能更有效)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2019-08-04
    • 2018-03-01
    相关资源
    最近更新 更多