2016-10-21 7 views
0

実際に私はVlookupを使ってExcel上でこれを作ったが、今はウェブページ上でこれを作っている。javascriptのVlookupのような機能

は、私は、ユーザーが値

<input class="text" type="text" name="rawScore" onchange="calcpercentile()"> 

を入力します入力ボックスを持っていると私は、ユーザーが結果に得ることができる場所のスパンを持って

<span id="percentile"></span> 

私は、2つの配列

var percentile = [10, 20, 30, 40, 50, 60, 70, 80, 90]; 
var rawScores = [1, 3, 5, 7, 10, 12, 18, 25, 27]; 
を持っています

私はどのようなコードを書くべきですか?書く場合は、私は

input  value 
(rawScores) (percentile) 
1   10 
2   20 
3   30 
4   40 
+0

生スコア4が40パーセンタイルにマッピングされるのはなぜですか? –

+0

あなたは何を試してみませんか? calcpercentileの実装を追加します。 –

答えて

0

あなたの例は間違っているようです。スコア1は10パーセンタイルに、2は& 3は20パーセンタイルに、4は30パーセンタイルにマッピングされます。

本質的に、私はあなたがしようとしていることは、入力よりも大きい最初の生スコアの配列インデックスを見つけて、percentiles配列から対応する値を返すことです。 Array#findIndex()のためのブラウザのサポートが制限されていることを

var percentiles = [10, 20, 30, 40, 50, 60, 70, 80, 90]; 
 
var rawScores = [1, 3, 5, 7, 10, 12, 18, 25, 27]; 
 

 
function map(input) { 
 
    let index = rawScores.findIndex(rawScore => rawScore >= input); 
 
    
 
    return percentiles[index]; 
 
} 
 

 
console.log(map(1)); 
 
console.log(map(2)); 
 
console.log(map(3)); 
 
console.log(map(4));

注:

Javascriptがこのような何かを見ることができます。あなたが広いブラウザのサポートが必要な場合は、単純なループベースのアプローチが良いかもしれない:

var percentiles = [10, 20, 30, 40, 50, 60, 70, 80, 90]; 
 
var rawScores = [1, 3, 5, 7, 10, 12, 18, 25, 27]; 
 

 
function map(input) { 
 
    for (var i = 0; i < rawScores.length; i++) { 
 
    if (rawScores[i] >= input) { 
 
     return percentiles[i]; 
 
    } 
 
    } 
 
} 
 

 
console.log(map(1)); 
 
console.log(map(2)); 
 
console.log(map(3)); 
 
console.log(map(4));

+0

はい、まさに私が欲しいものですが、私は素朴なままで、何かにこだわってしまいました。私は結果を得ません......................... –

+0

私codepenでソリューションを複製するのに苦労していますが、まだ固まっているhttp://codepen.io/amitsoni7/pen/GjPdoA?editors=1111 –

0

することができます入力テキスト:1つの

スパン表示 "10"

window.onload = function(){ 
 
     var percentile = [0,10, 20, 30, 40, 50, 60, 70, 80, 90]; 
 
     document.getElementById("rawScore").onchange = function() { 
 
      var index = document.getElementById("rawScore").value; 
 
      document.getElementById("percentile").innerHTML = percentile[index]; 
 
     } 
 
    }
<input class="text" type="text" id="rawScore"> 
 
    <span id="percentile"></span>