前提・実現したいこと
JSONで簡単な翻訳リストを作っています。
翻訳結果に変数を使いたいです。
発生している問題
翻訳結果に変数を使うため、以下 dictionaries1 という変数を、dictionaries2 という関数にしました。
しかし関数では取得が遅くなるではないかという問題が生じました。
この取得について dictionaries1 や dictionaries2 よりも早くしたいのですが、良い方法はありますでしょうか?
該当のソースコード(dictionaries1を使う)
現状の翻訳リストはこうなっております。
dictionaries1 は var で宣言しており、この中の翻訳結果に変数が使えません。
js
1var dictionaries1 = 2{ 3 "buttons": 4 { 5 "a": 6 { 7 "ja" : "送信" 8 ,"en" : "send" 9 }, 10 "b": 11 { 12 "ja" : "取得" 13 ,"en" : "get" 14 } 15 } 16} 17const txt = dictionaries1['buttons']['a']['ja']; 18console.log( txt ); // 「送信」という翻訳結果が取得される
試したこと(dictionaries2を使う)
翻訳結果に変数を使うために思いついたのが、上の dictionaries1 という変数を、下の dictionaries2 のように引数を持つ関数とすることです。
こうして引数 variable に渡したものが翻訳結果に使えるようになりました。
しかし dictionaries1 よりも取得が遅くなってしまったと思い、質問させて頂いた状況です。
js
1var dictionaries2 = function( variable ){ 2const obj = { 3 "buttons": 4 { 5 "a": 6 { 7 "ja" : "送信" 8 ,"en" : "send" 9 }, 10 "b": 11 { 12 "ja" : "取得" 13 ,"en" : "get" 14 } 15 }, 16 "sns": 17 { 18 "twitter": 19 { 20 "ja" : variable + "さんのtwitter" 21 ,"en" : "" 22 } 23 } 24} 25return obj; 26} 27const txt = dictionaries2('鈴木')['sns']['twitter']['ja']; 28console.log( txt ); // 「鈴木さんのtwitter」という翻訳結果が取得される 29
試したこと(dictionaries1とdictionaries3を使う)
続いて、翻訳結果に変数が必要な場合だけ、次のように分ける方法も考えました。
つまり変数が不要な方は従来と一緒で、必要な方だけ関数化しておくという方法です。これなら遅くなるのは最小限で済むと思いました。
ですがまとまりが悪く感じて違和感を覚えます。
js
1// 変数が不要な方 2var dictionaries1 = 3{ 4 /* 略 */ 5} 6const txt = dictionaries1['buttons']['a']['ja']; 7console.log( txt ); // 「送信」という翻訳結果が取得される 8 9// 変数が必要な方 10var dictionaries3 = function( variable ){ 11const obj = { 12 "sns": 13 { 14 "twitter": 15 { 16 "ja" : variable + "さんのtwitter" 17 ,"en" : "" 18 } 19 } 20} 21return obj; 22} 23const txt = dictionaries3('鈴木')['sns']['twitter']['ja']; 24console.log( txt ); // 「鈴木さんのtwitter」という翻訳結果が取得される
以上の経緯から、翻訳結果に変数を使いつつ、早く取得できる方法があればと思いこちらへのご質問とさせて頂きました。
長くなってしまいすみません。もしご協力いただける方がいらっしゃいましたらよろしくお願い致します。
補足情報
事情があって、辞書リストの階層は変更したくないです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/21 03:11
2019/12/21 03:50
2019/12/21 05:37