Yahoo知恵袋回答編


こんにちは

久しぶりにYahoo知恵袋を読んでいると・・・

今回気になったのがこの質問

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11147655116

内容は・・・

「配列からhtmlを書き出したいのですが
途中に見出しを挟む方法がわかりません。
考え方のヒントを教えてもらえないでしょうか。」

とのこと

という配列を

という様に、イニシャルごとに見出しをつけたいそうです。

しかし、

という様に、全ての項目が一つのリストになってしまっている様子・・・

これに、

「最初に<ul>を出力
以後、ar[i][0]が変わったら</ul><ul>を出力
とか
余分な<ul>の処理がいりますが」

という回答者さんのアドバイスがありました。

確かに、イニシャルの変わり目に</ul ><ul>

を挟む方法でも出来そうです。

しかし、この方法では、回答者さん自身も指摘しておられる様に、下記の問題があります。

  • ・最初の</ul >ダグ、最後の<ul>タグを消去する処理が必要になる。
  • ・配列がイニシャルの順番どうりに並ぶ様に作成していないと正確に区切れない

そこで・・・・

まず、連想配列にしてみます。

そして、イニシャルだけが入った配列を作り、重複を消去します。(この場合、「あ」、「う」、「お」)

元々のデータがあいうえお順とも限らないのでこの次に
ini配列をソートしてあげましょう。

この配列をjQueryのgrepを利用して、配列の特定のイニシャルを「あ」から順番に検索、イニシャルごとにまとまった新しい配列を作成します。

イニシャルの種類の数の配列の数の分だけforで回し、この場合、「あ」、「う」、「お」のイニシャルを検索、新しいaという配列に収納します

あとはイニシャルをh1で囲み、グループをulで囲む、その中に同じイニシャルのデータをデータの数だけ出力してやるだけです。

この方法ですと、元々のデータのイニシャルがバラバラだったとしてもa配列を作るときにイニシャルごとにまとめたのでちゃんと順番通り出力されます。

以上非常にざっくりとした解説でしたが(汗)

わからないことがあればコメントいただければできる限りお答えしたいと思います。

Please follow and like us:
20

andy

プログラマ、フロントエンドエンジニアです。 1988年生まれ Java(JavaEE,JavaFX,Android),Javascript,TypeScript,Angularjs,Backbone.jsなど使っています フリーランスです。 ご相談お待ちしております。 GitHub github.com/kotaroyamame *イラスト制作moom

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*