2017-08-17 5 views
1

配列は文字列です。 ""を追加するのは時間がかかるので、Intのように書いています。ごめんなさい。 「 - 」の要素が一致しない場合2つの配列を比較して、SWIFT 3の一般的でない要素のインデックスを見つけます。

Iは、2つの配列を持っている私はarray1array2の各配列要素を比較して挿入する必要がvar array1 = [[1,2,3,4,5,6,7,8,9]]

var array2 = [[1,2,3,4], 
       [2,3,4,5], 
       [2,4,5,6], 
       [1,2,3,4,5,6,7,8,9], 
       [1,2,3,4,5,6,7,8], 
       [2,3,4,5,6,7,8]] 

を言います。 「 - 」このように、

var array2 = [[1,2,3,4,-,-,-,-,-], 
       [-,2,3,4,5,-,-,-,-], 
       [-,2,-,4,5,6,-,-,-], 
       [1,2,3,4,5,6,7,8,9], 
       [1,2,3,4,5,6,7,8,-], 
       [-,2,3,4,5,6,7,8,-]] 

私は配列2の各配列を反復し、配列1と比較し、指標を比較して挿入しようとしたのインデックス位置 Iで、私は予期しない結果を取得しています。私は countによって配列1と配列2の各配列を比較すると思っていた

for item in array2{ 
var elementsArray = item 
for i in stride(from: 0, to: elementsArray.count, by: 1) { 
    if elementsArray[i] != array1[i] 
    { 
     elementsArray.insert("-", at: i) 
    } 
    print("elemnt array.....", elementsArray, "\n\n") 
} 
} 

UPDATEは、挿入し珍しい要素のインデックスを見つけると「 - 」そのインデックス位置に。このアプローチは正しいですか?これで私を助けてください。

+0

'array1'は1次元配列か配列配列ですか?後者の場合、 'array1'のi番目のサブアレイと' array2'のi番目のサブアレイを比較する必要がありますか? –

+0

'array2'の各配列について、lengthは' array1'の長さよりも長くていいですか? – Adeel

+0

@ DvidPasztor 'array1'は一次元のみです。 – Bella

答えて

2

あなたはarray2の各行が置き換えられ、行中に元々存在していない要素で、 array1の変形によって置き換えられる新しい配列たい「 - 」:

let array1 = [1,2,3,4,5,6,7,8,9] 
let array2 = [[1,2,3,4], 
       [2,3,4,5], 
       [2,4,5,6], 
       [1,2,3,4,5,6,7,8,9], 
       [1,2,3,4,5,6,7,8], 
       [2,3,4,5,6,7,8]] 

let filled = array2.map { row in 
    array1.map { 
     row.contains($0) ? String($0) : "-" 
    } 
} 

for row in filled { print(row) } 

出力:

 
["1", "2", "3", "4", "-", "-", "-", "-", "-"] 
["-", "2", "3", "4", "5", "-", "-", "-", "-"] 
["-", "2", "-", "4", "5", "6", "-", "-", "-"] 
["1", "2", "3", "4", "5", "6", "7", "8", "9"] 
["1", "2", "3", "4", "5", "6", "7", "8", "-"] 
["-", "2", "3", "4", "5", "6", "7", "8", "-"] 

大きな配列の場合、これは、 の高速封じ込めチェックでSet(row)を作成するか、または要素 が増加していることを利用することで改善できます注文。

elementsArray が反復処理中に変更されるため、アプローチが正しく機能しません。

+0

Yippie ... !!それは働いた...ありがとうたくさん。 :) array1とarray2の結果に基づいて、別のデータを持つ配列array3がもう1つあります。問題は、array2の各要素に一致させることによって、array2のようなarray3の値を設定する必要があることです。助けてください。 – Bella

+0

@Bella:私はあなたの質問に答えようとしました。追加の問題がある場合は、この回答で提供されているツールを使用して、まず自分で解決してください。必要に応じて、新しい質問をしてください。 –

+0

申し訳ありません。配列がない場合はどうすればいいのですか?そして、私はarray2の問題だけを解決しなければなりません。私はそれを解決するために最善の努力をしていますが、適切な方法を得ていません – Bella

関連する問題