2017-05-15 6 views
0

大量のデータを含む文字列の配列を持っています。これが偶数の結果配列のインデックス、および奇数指標の良いデータにおけるゴミデータを私に残しSwift 3配列内の大量のデータをソート

var result = contentArray[1].components(separatedBy: ",") 

:私は次のように分離器を使用して良いデータを分離しています。

ここでは、後で簡単にするために良いデータを扱いたいと思っています。私はストライドを使ってforループを使って別の配列を作成することでこれを行うことができます。

これは少なくとも1つの余分なステップのようです。 2つの配列を作成せずに最初の配列にデータを並べ替える方法はありますか?これは、私が1または2でそれを行うことができるはずだと思われるとき、大量のデータを持つ3つの配列を作成するアプリケーションを持っているだろう。私は20のデータセットの最小でこれをやって、メモリ内の配列

+1

時期尚早に最適化するのはなぜですか?私の提案は、最初に動作させ、いくつかのパフォーマンステストを実行し、必要な場合にのみ最適化することです。 – nathan

+1

@nathan良い点。私はちょっと早めにフレットする傾向があります。私がする必要がないときに余分な仕事をする理由は何ですか?明るい – froggomad

+0

基本的なSwiftタイプのほとんどはコピーオン・ミューテートです。実際のデータを変更しない場合は、追加の参照(小さなフットプリント)のみを行い、すべてのデータを実際にコピーしない可能性があります。 – PeejWeej

答えて

1

このようにすることができます。

let filterArray = result.indices.flatMap { $0 % 2 != 0 ? nil : result[$0] } 
print(filterArray) 

編集:あなたが同じ配列にフィルタの出力を保存したい場合は、このようにしてみてください。

var result = contentArray[1].components(separatedBy: ",") 
result = result.indices.flatMap { $0 % 2 != 0 ? nil : result[$0] } 
print(result) 
+1

それは私が避けたいと思っている3番目の配列を作成するだけではありませんか? – froggomad

+0

@froggomad編集された答えを確認してください –

+0

ありがとう、それは素晴らしいです。私はflatMapの構文に慣れていないし、コンパイラは未解決の識別子配列(配列[$ 0])を使用しています – froggomad

関連する問題