如何在Kotlin中将谓词应用于一个数组并使用结果从另一个数组中获取值

如何在Kotlin中将谓词应用于一个数组并使用结果从另一个数组中获取值,kotlin,Kotlin,我有两个数组(它们实际上是二维的,但我认为这对于这个问题并不重要) 我想买一个里面有“y”和“u”的系列 我在这件事上走来走去,所以我想我错过了正确的方法。我最后一次尝试是沿着(使用扁平化,因为它是一个二维数组) 然后我可以使用它从arr2中获取值(假设它们始终保持平坦?) 我想我的问题是 a) 如何使用带有谓词的mapindex获取索引列表 或 b) 更好的方法是什么(我假设我采取了错误的方法tbh)压缩列表并使用扩展名 fun <Any> List<Pair<Any,

我有两个数组(它们实际上是二维的,但我认为这对于这个问题并不重要)

我想买一个里面有“y”和“u”的系列

我在这件事上走来走去,所以我想我错过了正确的方法。我最后一次尝试是沿着(使用扁平化,因为它是一个二维数组)

然后我可以使用它从arr2中获取值(假设它们始终保持平坦?)

我想我的问题是

a) 如何使用带有谓词的mapindex获取索引列表 或
b) 更好的方法是什么(我假设我采取了错误的方法tbh)

压缩列表并使用扩展名

fun <Any> List<Pair<Any,Any>>.myfilter(c: Any): List<Any>{
    val result: MutableList<Any> = mutableListOf()
    for(item in this){
        if(item.first == c)
            result.add(item.second)
    }
    return result
}

fun main(args: Array<String>){
    val arr1 = arrayOf<Char>('a', 'b', 'c', 'd', 'e', 'b')
    val arr2 = arrayOf<Char>('z', 'y', 'x', 'w', 'v', 'u')

    val zipped: List<Pair<Char,Char>> = arr1 zip arr2

    print(zipped.myfilter('e'))
}
fun List.myfilter(c:Any):List{
val结果:MutableList=mutableListOf()
对于(本文件中的项目){
如果(item.first==c)
结果。添加(第二项)
}
返回结果
}
趣味主线(args:Array){
val arr1=arrayOf('a','b','c','d','e','b'))
val arr2=阵列的('z','y','x','w','v','u'))
val压缩:列表=arr1压缩arr2
打印(zipped.myfilter('e'))
}

压缩列表并使用扩展名

fun <Any> List<Pair<Any,Any>>.myfilter(c: Any): List<Any>{
    val result: MutableList<Any> = mutableListOf()
    for(item in this){
        if(item.first == c)
            result.add(item.second)
    }
    return result
}

fun main(args: Array<String>){
    val arr1 = arrayOf<Char>('a', 'b', 'c', 'd', 'e', 'b')
    val arr2 = arrayOf<Char>('z', 'y', 'x', 'w', 'v', 'u')

    val zipped: List<Pair<Char,Char>> = arr1 zip arr2

    print(zipped.myfilter('e'))
}
fun List.myfilter(c:Any):List{
val结果:MutableList=mutableListOf()
对于(本文件中的项目){
如果(item.first==c)
结果。添加(第二项)
}
返回结果
}
趣味主线(args:Array){
val arr1=arrayOf('a','b','c','d','e','b'))
val arr2=阵列的('z','y','x','w','v','u'))
val压缩:列表=arr1压缩arr2
打印(zipped.myfilter('e'))
}

看起来像是一个应用程序,即存储键值对,而不是处理数组索引。否则,您的方法看起来是可行的。看起来像是一个应用程序,即存储键值对,而不是处理数组索引。否则你的方法看起来是可行的。太棒了,谢谢。我记得几天前看到zip函数时,我在想它在合适的环境下看起来是多么有用。显然一只耳朵进一只耳朵出。。。谢谢,太棒了,谢谢。我记得几天前看到zip函数时,我在想它在合适的环境下看起来是多么有用。显然一只耳朵进一只耳朵出。。。谢谢
val res = obj.filter { it == 'b' }
val newList = arr1.flatten().mapIndexed{idx, it -> predicate}
val result = (arr1 zip arr2)
    .filter { (c1, _) -> predicate(c1) }
    .map { (_, c2) -> c2 }
fun <Any> List<Pair<Any,Any>>.myfilter(c: Any): List<Any>{
    val result: MutableList<Any> = mutableListOf()
    for(item in this){
        if(item.first == c)
            result.add(item.second)
    }
    return result
}

fun main(args: Array<String>){
    val arr1 = arrayOf<Char>('a', 'b', 'c', 'd', 'e', 'b')
    val arr2 = arrayOf<Char>('z', 'y', 'x', 'w', 'v', 'u')

    val zipped: List<Pair<Char,Char>> = arr1 zip arr2

    print(zipped.myfilter('e'))
}