[解決済み] Swiftでインデックスを使ったMapまたはReduce
2022-04-24 09:16:09
質問
の配列のインデックスを取得する方法はありますか?
map
または
reduce
をSwiftで使うことはできますか?私は次のようなものを探しています。
each_with_index
をRubyで作成しました。
func lunhCheck(number : String) -> Bool
{
var odd = true;
return reverse(number).map { String($0).toInt()! }.reduce(0) {
odd = !odd
return $0 + (odd ? ($1 == 9 ? 9 : ($1 * 2) % 9) : $1)
} % 10 == 0
}
lunhCheck("49927398716")
lunhCheck("49927398717")
を取り除きたいのですが。
odd
変数
上記
.
解決方法は?
を使用することができます。
enumerate
を使用すると、シーケンス (
Array
,
String
など)を、整数のカウンタとand要素が対になったタプルの列に変換する。つまり
let numbers = [7, 8, 9, 10]
let indexAndNum: [String] = numbers.enumerate().map { (index, element) in
return "\(index): \(element)"
}
print(indexAndNum)
// ["0: 7", "1: 8", "2: 9", "3: 10"]
を取得するのとは違うことに注意してください。
インデックス
コレクションの
enumerate
は整数のカウンターを返します。これは配列のインデックスと同じですが、文字列や辞書の場合はあまり役に立ちません。各要素の実際のインデックスを取得するには、次のようにします。
zip
:
let actualIndexAndNum: [String] = zip(numbers.indices, numbers).map { "\($0): \($1)" }
print(actualIndexAndNum)
// ["0: 7", "1: 8", "2: 9", "3: 10"]
列挙型シーケンスに
reduce
というのも、メソッドのシグネチャにすでに累積/現在のタプルが含まれているからです。その代わりに
.0
と
.1
の2番目のパラメータで
reduce
のクロージャになります。
let summedProducts = numbers.enumerate().reduce(0) { (accumulate, current) in
return accumulate + current.0 * current.1
// ^ ^
// index element
}
print(summedProducts) // 56
Swift 3.0以上
Swift 3.0の構文はかなり違うので。
また、short-syntax/inlineを使用すると、辞書に配列をマッピングすることができます。
let numbers = [7, 8, 9, 10]
let array: [(Int, Int)] = numbers.enumerated().map { ($0, $1) }
// ^ ^
// index element
それが生産される。
[(0, 7), (1, 8), (2, 9), (3, 10)]
関連
-
[解決済み] Swift: print() vs println() vs NSLog()
-
[解決済み] オブジェクトのためのマップ関数(配列の代わりに)
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] Swiftの@selector()?
-
[解決済み] map()関数内のインデックス
-
[解決済み】Swiftで正規表現にマッチしたものを取り出す
-
[解決済み】Haskellの入門編
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XCTest の基礎となるモジュールをロードできない
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] Swiftで文字列が別の文字列を含んでいるかどうかを確認するには?
-
[解決済み] タイプ 'StorageMetadata' の値には、メンバー 'downloadURL' がありません。
-
[解決済み】==と===の違いについて
-
[解決済み】Swiftのオプション値とは何ですか?
-
[解決済み】weak referenceとunowned referenceの違いは何ですか?
-
[解決済み】プログラムによってナビゲーションのタイトルを変更する
-
[解決済み】なぜ、Swiftの文字列では、?のような絵文字が奇妙に扱われるのですか?
-
[解決済み】UIViewControllerの最上位機種を取得する。