[英]How to add element at Last index Swift
我从服务器获取一个数组,并将其存储在NSMutableArray中。 现在的问题是数组未排序。 例如。 数组= [“ A”,“ B”,“无”,“ C”,“ D”]。 我想对其进行排序,最后将“ None”元素放置。 即[“ A”,“ B”,“ C”,“ D”,“无”]。 尝试进行交换,但无法满足条件,因为该阵列将来可能会增加。 检查我的下面的代码无法正常工作。
if array.containsObject( "None" ){
print("\(array.indexOfObject("None"))")
let noneIndex = array.indexOfObject("None")
print(noneIndex)
array.removeObject(noneIndex)
print("Remove Array:-\(array)")
array.insertObject(noneIndex, atIndex: (array.lastObject?.index)!)
print("Sorted Array:-\(array)")
}
也许我误解了您需要做什么,但是如果您只想按字母顺序对它进行排序,则可以在数组上使用sorted()
。
您还可以使用filter
从数组中删除“ None”,对其进行排序,然后将“ None”附加为最后一个元素
例如,如果您有
let elements = ["Alpha", "Bold", "None", "charlie", "Delta", "echo", "zebra", "k"]
您可以通过过滤它开始:
let filteredElements = elements.filter { $0.uppercased() != "NONE"}
对过滤的元素进行排序:
var sortedElements = filteredElements.sorted { $0.uppercased() < $1.uppercased()}
追加“无”
sortedElements.append("None") // ["Alpha", "Bold", "charlie", "Delta", "echo", "k", "zebra", "None"]
并完成。
这里是组合的:
let lastElement = "None"
let elements = ["Alpha", "Bold", "None", "charlie", "Delta", "echo", "zebra", "k"]
var sortedElements = elements.filter({$0.uppercased() != lastElement.uppercased()}).sorted(by: {$0.uppercased() < $1.uppercased()})
sortedElements.append(lastElement)
希望对您有帮助。
var array = ["A", "B", "None", "C", "D"]
if let noneIndex = array.index(of: "None") {
array.remove(at: noneIndex)
array.append("None")
}
print(array)
这应将None
在数组的末尾移动,并对其他元素进行排序:
let ["A", "B", "None", "C", "D"]
array.sorted { $1 == "None" || $0 < $1 } // ["A", "B", "C", "D", "None"]
这只是利用了可以通过Array
传递给sort
/ sorted
方法的by
参数的好处。
Edit @MartinR对于此答案中的比较谓词有很强的观点,实际上并没有提供strong weak ordering
。 用正确的谓词对数组进行排序将遵循以下步骤:
array.sorted { $0 == "None" ? false : $1 == "None" ? true : $0 < $1 }
这将起作用:
// starting test array
let array = ["B", "None", "C","P","None","A", "Q"]
var sorted = array.sorted { (str1, str2) -> Bool in
return str1 < str2
}
sorted.forEach { str in
if str == "None" {
if let idx = sorted.index(of: str) {
sorted.remove(at: idx)
sorted.append(str)
}
}
}
// Sorted array is now ["A", "B", "C", "P", "Q", "None", "None"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.