角型JSでTypescriptを使用すると、ループ内に一時変数を作成して値を設定することがあります。 私はJSONレスポンスをループし、表示したい項目を決定しています。アイテムには、フロントエンドに表示されるかどうかを決定するいくつかの変数があります。 具体的には、調査用です。調査が完了していない場合にのみ有効な質問を表示したいが、回答が完了していれば回答がある質問を表示することができます(これらは「非アクティブ」[削除された質問])。Javascript:Forループでは、構造体の値または一時変数を明示的に設定する方が良いでしょうか?
例JSONレスポンス:
私のコントローラのレスポンスデータを扱う{
"surveyId": 2,
"completed": false
"questions" : [ {
"id" : 1111,
"question": "Blah blah blah blah ?",
"answer": null
},
{
"id" : 1112,
"question" : "Yes no no no yes?",
"answer": 1,
"active": true
}
:
myService.getSurvey(vm.id)
.success(function(data: any) {
...
let questionableJSON: {id: number, question: string, answer: number}[] = [];
for (let obj of data.questions) {
//comparing how i do this: set a "temp" variable to use:
let answerNum: number = 1;
//this is only checking for "falsey" not undefined or null -- that is unimportant for the sake of this question
if (obj.answer) {
answerNum = obj.answer;
}
//vs. way #2: just checking if the var exists and setting it
if (angular.isUndefined(obj.active)) {
obj.active = true;
}
//now push to the temp JSON structure:
if (data.completed && obj.answer) {
questionableJSON.push({
id: obj.id,
question: obj.question,
answer: answerNum
});
}
else if (!data.completed && obj.active) {
questionableJSON.push({
id: obj.id,
question: obj.question,
answer: answerNum
});
}
}
});
//now set our controller question data to our newly obtained data populated in our temp JSON from the response:
vm.questions = questionableJSON;
質問がある:それは私が設定obj.active同じ方法のために一時変数を設定することをお勧めしますanswerNumの一時変数?または、ループの各繰り返しに対して別の一時変数を宣言するのではなく、obj.activeを値に設定する方がよいでしょうか?これらの慣行のうち、よりクリーンで効率的なものはどれですか?これは通常のjavascriptにも当てはまり、この関数は通常のJSとほとんど変わりません。これは、Angularに特定のものではありません。
これで十分でない場合、if.. else if
を1つのif文に||以下のような:
if (data.completed && obj.answer || !data.completed && obj.active)
おかげで
この疑問を書いたCPUサイクルは、すでにobj.activeをtemp varに割り当てるのではなく、毎回逆参照するのではなく、もっと多くのCPUサイクルを浪費していると思います。読みやすさまず!コードの維持**は**高価です。 –