表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
23/61

ionicを試す 12日目 配列や連想配列のコピー

前回はピザのトッピング注文テーブルに色々改善点を見つけたところで終了しています。


今回は、これらの問題を解決あるいは設計自体の見直しで妥協できる内容にして見たいと思います。


前回出た問題点

---------------------------------------------------------------

1.メニューのチェックボックスをオン・オフさせるとオーダーの項目が際限なく増える

  (今回は1アイテムは一度だけオーダーできることにしたい)

2.オーダーの項目のチェックボックスとメニューのチェックボックスが連動している

  (前回指摘の問題)

3.生地が複数選べるのはおかしい。ソースも一つのみ選択にしたい

4.メニューは並び順になっているのにオーダーの順番がバラバラ

5.オーダー側のチェックを外すとオーダーからアイテムが削除され、メニューのチェックも外したい

6.出来れば生地やソース、トッピングなどのカテゴリー別に並べたい

---------------------------------------------------------------


まず、2番目を以下のような手法で対応します。


・メニュー配列からコピーしたい配列の要素(この場合、連想配列)を文字列にする

・その文字列を元に新しい要素(この場合、連想配列)を作る

・こうして作った(しがらみのない)要素をオーダー配列の末尾に付け加える


単純な命令ですので直接ソースコードを示します。

"home.page.ts"

------------------------------------------

//文字列化して

let strObj = JSON.stringify(this.Menu[index]);

//その文字列から新規にオブジェクトを作成して

let tmpObj = JSON.parse(strObj);

//そのオブジェクトをOrder配列の末尾に追加

this.Order.push(tmpObj);

------------------------------------------


よく使う事になると思いますが、VisualStudioCodeで"JSON."と大文字で入力すると入力候補で出てきますので、使うのは難しくないと思います。

(let は変数の宣言に使います。)


出番は少なくないと思いますので是非覚えてください。


・JSON.stringify (オブジェクト) がオブジェクトを文字列にする

・JSON.parse(文字列) が文字列をオブジェクトにする


※JSON.stringify(オブジェクト, null, 2) と言う書き方をするとインデントと改行付きで文字列を出力してくれるので読みやすくなります。以下のサイトをご覧ください。


mdn web docs JSON.stringify()

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify


次回は、問題1.と3.の問題を解決します。


短いですが、ここまで

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ