(Swift)在迭代数组时移动对象

时间:2017-10-17 17:08:47

标签: ios iphone swift xcode

我正在尝试从1个数组中删除一些对象,然后将它们移动到另一个数组中。 我这样做是通过从反向数组中删除它们,并将它们添加到另一个数组,如下所示:

var array1 = [1,2,3,4,5,6]
var array2 = [1,2]
for (index, number) in array1.enumerated().reversed() {
    if(number>2) {
        array1.remove(at: index)
        array2.append(number)
    }
}

问题是,数组2中的对象明显是相反的(1,2,6,5,4,3) 我可以很容易地提出复杂的解决方法,但我想知道是否有任何直接的方法来做到这一点。

提前致谢!

3 个答案:

答案 0 :(得分:1)

而不是array2.insert(number, at: 2) 数字let droppedItems = array1.dropFirst(2) array1.removeLast(array1.count - 2) array2.append(contentsOf: droppedItems)

import Filesystem.Path.CurrentOS as Path

filePathToString :: FilePath -> String
filePathToString = Path.encodeString

没有循环你可以做同样的事情

csvData <- BL.readFile $ filePathToString fname

答案 1 :(得分:1)

如果我理解正确,您希望将数字从array1移至array2,如果它们高于2:

// get only numbers higher than 2 and append them to the second array
array2.append(contentsOf: array1.filter { $0 > 2 })
// filter the moved items from the first array
array1 = array1.filter { $0 <= 2 }

// split the array into two parts in place
let index = array1.partition { $0 > 2 }
// move the second part
array2 += array1[index...]
// remove the second part
array1.removeSubrange(index...)

答案 2 :(得分:0)

反转它,抓住子阵列然后追加到array2。你不需要改变array1。类似的东西:

array2.append(contentsOf: array1.reversed()[0..<array1.count-1])