【问题标题】:Get particular index from array从数组中获取特定索引
【发布时间】:2021-01-13 11:57:57
【问题描述】:

我有一个数组: var myArray = ["","dfg","erte","","asd"]

我怎样才能得到那些没有""..的元素的索引?

我有这个代码:

for i in myArray {
                                                                    
  let index = myArray.firstIndex(where: {$0 == i})

} 

这给了我所有元素的索引。但我想要那些没有""的元素的索引

【问题讨论】:

  • 您发布的代码没有意义。它循环遍历数组中的每个元素,然后在每次遍历中创建一个局部变量index,然后在下一次遍历循环时将其丢弃。你想要的输出是什么。你说'我想要那些[不包含]“”的元素的索引。这是否意味着您要创建一个包含每个非空数组元素的索引的数组?
  • 另外,循环将始终匹配数组的当前元素,或者,如果相同的值多次出现,它将返回任何重复值第一次出现的索引。跨度>
  • which doesn't have ""你的意思是不为空的字符串?

标签: ios arrays swift


【解决方案1】:

这是一个使用filter的选项

let range = myArray.indices.filter { !myArray[$0].isEmpty }

要使用range 访问数组,您可以这样做

for index in range {
    print(myArray[index])
}

当然,如果最终目标是获得一个包含所有非空值的数组,那么您可以直接对数组进行过滤

let notEmpty = myArray.filter { !$0.isEmpty }

【讨论】:

  • 实际上是@Joakim Danielson,我想要一个像这样的单一索引..for i in myArray { let range = ... let id = self.myIDArray[range!] }
  • @user14822019 不,您需要不为空的元素的索引。这就是它在你的问题中所说的。如果你想要他们一个接一个然后循环range
  • @user14822019,你想要一个索引是什么意思?用文字解释你想要哪个索引?第一个非空元素的索引?
【解决方案2】:

如果您的目标是创建一个包含字符串数组中所有非空元素的索引的数组,您可以使用 enumerated() 和 compactMap:

var myArray = ["","dfg","erte","","asd"]

let indexes = myArray.enumerated().compactMap { (index, value) in
    value.isEmpty ? nil : index
}

print(indexes)

输出:

[1, 2, 4]

如果您想要第一个非空元素的索引,则可以使用如下代码:

if let firstNonEmptyIndex = myArray.firstIndex(where: {!$0.isEmpty}) {
    print("The entry at index \(firstNonEmptyIndex) is empty")
} else {
    print("No entries in the array are empty.")
}

【讨论】:

    【解决方案3】:

    您可以在这里获取带有偏移值的索引:

    var str = ["","123","345","","789"]
    
    for i in str.enumerated(){
        if i.element != "" {
            print(i.offset)
        }
    }
    

    【讨论】:

    • 实际上我的整个数组是一个字符串数组..请参阅编辑问题
    【解决方案4】:

    您也可以使用compactMap 删除 nil 值(如果数组有)

    var myArrayIndex = myArray.enumerated().compactMap { (index, data) -> Int? in
        if !data.isEmpty {
            return index
        }
        return nil
    }
    print(myArrayIndex)
    

    排序方式:

    var myArrayIndex = myArray.enumerated().compactMap{!$0.element.isEmpty ? $0.offset : nil}
    print(myArrayIndex)
    

    【讨论】:

      猜你喜欢
      • 2010-09-25
      • 2021-01-22
      • 2019-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 2018-12-04
      相关资源
      最近更新 更多