如何删除所有数组项除了索引倍数为x - Swift

时间:2015-07-22 06:39:09

标签: swift

我有一个坐标数组(总共965个)。我想在Google Roads API中使用这些坐标,但限制为100。

我有一个函数可以确定数组中有多少项,然后获取要使用的值。

round(Double(userCoordinatesHardCoded.count / 100))

产生9。

我想删除所有不在索引倍数的项目,在本例中为9.因此理论上我在数组中只有不超过100个项目。

如果可能,我想保留第一个和最后一个数组项。

2 个答案:

答案 0 :(得分:0)

如果空间不是问题,您可以创建具有所需倍数的另一个数组。

var oldCoordinates // Imagine it having all those elements
var newCoordinates : GoogleCoordinates = [] // This one will have new ones

newCoordinates.append(oldCoordinates[0])
var x = 1
for (x; x < oldCoordinates.count ; x++ ) {
   if (x % 5 == 0) {
      newCoordinates.append(oldCoordinates[x])
   }
}
if (x != (oldCoordinates.count - 1)) {
   newCoordinates.append(oldCoordinates[oldCoordinates.count - 1])
}

答案 1 :(得分:0)

我知道这已经得到了解答,但这是使用Swift内置的filter函数的一个很好的用例:

let newCoordinates = oldCoordinates.filter { coord in
  return (coord % 9 != 0)
}