2017-08-19 14 views
-5

異なる数値範囲が定義されたマップがあります。ユーザが任意の1つの範囲オプションを選択することができますか、あまりにも複数選択することができますJavascriptの数値範囲を計算する

0: 0-10 
1: 10-25 
2: 25-50 
3: 50-100 
4: 100-99999 

ユーザ選択

var map = [ 
{ 
    'low':0, 
    'high':10 
}, 
{ 
    'low':10, 
    'high':25 
}, 
{ 
    'low':25, 
    'high':50 
}, 
{ 
    'low':50, 
    'high':100 
}, 
{ 
    'low':100, 
    'high':999999 
} 
]; 

、以下のような任意の範囲のオプションを選択することができます。ユーザーが0:0-10と1:10-25オプションを選択した場合、1つの範囲、つまり0-25を設定する必要があります(オプション1の値が低く、オプション2の値が高くなります)。同様に、私はJavaScriptでこのアルゴリズムを書いて

0,1,3,4 = 0-25 & 50-100 
0,2,4 = 0-10,25-50,100-99999 

のような選択の複数のオプションがあることができ

VARマップ= [ { '低':0、 '高いです': 10 }、 { 'ロー':10、 'ハイ':25 }、 { 'ロー':25、 'ハイ':50 }、 { 'ロー':50、 'ハイ'、100 } { 'ロー':100、 'ハイ':999999 }]。

関数getRanges(選択){

var ranges = [],already_used_range = [],low=0,high=0; 
for(var i= selected.length-1;i >0; i--) { 

    console.log('i ='+i); 
    if(selected[i] - selected[i-1] > 1) { 
     console.log('here'); 

     if(!$.inArray(selected[i], already_used_range)) { 
      ranges.push(map[selected[i]]); 
     } 
     ranges.push(map[selected[i-1]]); 
     console.log(ranges); 
    } else { 
     console.log('here2'); 
     //console.log('selected.i-1 = ' + selected[i-1]); 
     console.log('selected.i = ' + selected[i]); 
     //var lv = i-1; 
     var lv = i; 
     console.log('lv =' + lv); 
     console.log('selected[lv] =' + selected[lv]); 

     console.log('low = ' + map[selected[lv]-1].low); 
     console.log('high = ' +map[selected[i]].high); 
     low = map[selected[lv]-1].low; 
     if(high ==0) { 
      var hv = selected[i]; 
      console.log("hv =" + hv); 
      high = map[hv].high; 
      } 

     already_used_range.push(selected[i]); 
     already_used_range.push(selected[lv]-1);    
    } 
} 

console.log("low = " + low); 
console.log("high = " + high); 
console.log("ranges"); 
console.log(ranges); 

}

VAR = [2,3,4]選択されました。 getRanges(selected);

var selected = [3,4]; getRanges(selected);

var selected = [2,4]; getRanges(selected);あなたのコメントについて

+0

あなたは範囲を設定する必要はどういう意味ですか?この範囲を消費するのは何ですか?どのように使用されますか?これらは非常に重要な詳細です。十分な情報が提供されていません。 – philraj

+0

ここにアルゴリズムがあります...選択されたものの中で最も低いもののうち最も低いものと最も高いもののうちの最高のものを探してください。 – Redu

+3

誰かがあなたの宿題をやろうとしていると思いますか?あなたは何もしようとしなかった。オンデマンドでスクリプトを書くのではなく、ここで協力しています。 –

答えて

-1

、ここでそれを達成するコードです:

var map = [ 
    { 
     'low':0, 
      'high':10 
    }, 
    { 
     'low':10, 
     'high':25 
    }, 
    { 
     'low':25, 
     'high':50 
    }, 
    { 
     'low':50, 
     'high':100 
    }, 
    { 
     'low':100, 
     'high':999999 
    } 
]; 

var input = [0, 1, 4] // some user input 

lowest = map[input[0]]['low'] // lowest of range will be the first item of user selection 
highest = map[input[input.length - 1]]['high'] // highest will be the last item of user selection 
+0

エンドポイント(別のアイテムの値が低い現在のアイテムの値が高い)が一致しない場合は、完全な範囲を選択する必要があります。 [0,1,4]の場合、1の高い値は4の低い値と交差しないので、結果は0-25と100-9999(2つの範囲)でなければなりません。 – user3695599

関連する問題