在Swift 2中剪切数组元素

时间:2016-03-07 14:19:17

标签: ios arrays swift

我有一系列元素(它是一个基本数组)。数组的类型是String

basicArray = [1710, 1725, 1740, 1755, 1810, 1825, 1840, 1855, 1925, 1955, 2020, 2050, 2120, 2150, 2220, 2250, 2320, 2350, 2430]

我需要创建两个新数组,其中basicArray的每个元素必须分成两部分,例如:

array1 = [17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 20, 20....]
array2 = [10, 25, 40, 55, 10, 25, 40, 55, 25,55, 20, 50...]

如何做得更好?谢谢你的建议!

3 个答案:

答案 0 :(得分:9)

let basic = ["1710", "1725", "1740", "1755", "1810", "1825", "1840", "1855", "1925", "1955", "2020", "2050", "2120", "2150", "2220", "2250", "2320", "2350", "2430"]
let array1 = basic.map { String($0.characters.prefix(2)) }
let array2 = basic.map { String($0.characters.suffix(2)) }

print(array1)
print(array2)

输出:

["17", "17", "17", "17", "18", "18", "18", "18", "19", "19", "20", "20", "21", "21", "22", "22", "23", "23", "24"]
["10", "25", "40", "55", "10", "25", "40", "55", "25", "55", "20", "50", "20", "50", "20", "50", "20", "50", "30"]

这样的东西?

答案 1 :(得分:0)

试试这个(提示在代码注释中):

var basicArray = [1710, 1725, 1740, 1755, 1810, 1825, 1840, 1855, 1925, 1955, 2020, 2050, 2120, 2150, 2220, 2250, 2320, 2350, 2430]
var firstTwoDigitsArray = [Int]()
var lastTwoDigitsArray = [Int]()

for element in basicArray {

    // dividing by 100 shifts the numbers down by the first two digits
    firstTwoDigitsArray.append(element/100)

    // modulo 100 gets the last two digits 
    lastTwoDigitsArray.append(element%100)

}

print(firstTwoDigitsArray) // [17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24]
print(lastTwoDigitsArray) // [10, 25, 40, 55, 10, 25, 40, 55, 25, 55, 20, 50, 20, 50, 20, 50, 20, 50, 30]

答案 2 :(得分:-2)

Swift有一个名为filter的内置方法,它基本上是一个遍历所有元素的闭包,让你 - 顾名思义 - 根据谓词过滤元素:

let array = [1,2,3,4,5,6]

let array1 = array.filter { $0 % 2 == 0 }
print(array1) // [2, 4, 6]
let array2 = array.filter { $0 % 2 == 1 }
print(array2) // [1,3,5]

您还没有明确表示希望这些数组是如何过滤的,因此很难明确给出您可能正在寻找的答案......

相关问题