我正在尝试从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) 我可以很容易地提出复杂的解决方法,但我想知道是否有任何直接的方法来做到这一点。
提前致谢!
答案 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])