私は、データのセットが条件の非常に小さなリストと一致するかどうかを調べたいユースケースを持っています(議論のために、20未満であるとしましょう)。ループの効率ifステートメント
私はクライアントとサーバー側(NodeJS)の両方でJavaScriptを実行しています。私は2つのオプション(またはあなたが持つかもしれない他のもの)の中から選択しようとしていますが、複雑さと計算時間がどのように違うのか分かりません。私は彼らがごくわずかだと感じています。
オプション1:オプション2はOであるJavaScriptのに条件
if (data.a === 'foo' && data.b !== 'bar' && ...) {
// Passes
}
Oでオプション1を実行する(n)を変換(:条件
var conditions = [{
prop: 'a', check: '===', val: 'foo'
}, {
prop: 'b', check: '!==', val: 'bar'
}];
for (var i=0;i<conditions.length;i++) {
// Check conditions[i]
if (conditions[i].check === '===') {
if (data[conditions[i].prop] === conditions[i].val) {
// Keep checking
} else {
// Fail
}
} else if (conditions[i].check === '!==') {
...
}
}
オプション2の反復リスト1)、技術的には、しかし、実際にこのような小さなリストでは、特にあなたがJSON.eval()
を行うのにかかる時間を考慮し、アカウントのユニークなコードを提供することが重要ですか?
Profile it。他のすべてはブードゥー最適化です。 – BradHards
おそらく、オブジェクトのプロパティに基づいて式言語を作成しようとしないでください。代わりにジェネリック関数を使用して、JavaScriptで定義済みの演算子を処理してください。 –
私は十分なユースケースを与えていないようです。 'conditions'はユーザが提供する条件のリストなので、未知入力に基づいてデータを評価する方法が必要です。私は、Javascriptのコンパイル、リストの反復、さらにはデータベースサーバ上でのユーザ定義関数の実行を実験しています。何千ものクライアント(カスタムの 'condition'配列)に対して効率的かつスケーラブルなソリューションを見つけようとしています。 – knation