gpt4 book ai didi

swift - 在 Swift 中使用分区将一些预定义的元素移动到数组的末尾

转载 作者:行者123 更新时间:2023-11-28 05:54:50 25 4
gpt4 key购买 nike

我想使用 Array.partition(by:)将一些预定义元素从数组移动到数组末尾。

例子:

var my_array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let elementsToMove = [1, 3, 4, 5, 8]
// desired result: [0, 2, 6, 7, 9, ...remaining items in any order...]

有没有一种优雅的方式来做到这一点?观察 elementsToMove 不遵循某种模式。

最佳答案

partition(by:) 不保留元素的顺序:

var my_array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let elementsToMove = [1, 3, 4, 5, 8]

_ = my_array.partition(by: { elementsToMove.contains($0) } )
print(my_array) // [0, 9, 2, 7, 6, 5, 4, 3, 8, 1]

一个简单的解决方案是过滤掉并附加来自第二个数组:

let my_array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let elementsToMove = [1, 3, 4, 5, 8]

let newArray = my_array.filter({ !elementsToMove.contains($0) }) + elementsToMove
print(newArray) // [0, 2, 6, 7, 9, 1, 3, 4, 5, 8]

对于较大的数组,创建一个集合可能是有利的首先要移动的元素:

let my_array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let elementsToMove = [1, 3, 4, 5, 8]

let setToMove = Set(elementsToMove)
let newArray = my_array.filter({ !setToMove.contains($0) }) + elementsToMove
print(newArray) // [0, 2, 6, 7, 9, 1, 3, 4, 5, 8]

关于swift - 在 Swift 中使用分区将一些预定义的元素移动到数组的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51728469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com