2016-10-21 3 views
0

사실 저는 Vlookup을 사용하여 Excel에서이 작업을 수행했지만 지금은 웹 페이지에서이 작업을 수행하고 있습니다.javascript의 Vlookup like function

나는 사용자가 값

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

를 입력하는 입력 상자를 가지고 있고 사용자가 결과를 얻을 수있는 곳의 폭이

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

나는 두 배열

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 백분위 수에 매핑됩니다.

본질적으로, 나는 당신이하려고하는 것이 입력보다 큰 첫 번째 원시 스코어의 배열 인덱스를 찾고 백분위 수 배열에서 해당 값을 반환하는 것이라고 생각합니다.

자바 스크립트는 다음과 같이 보일 수 있습니다 :

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));

참고 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) { 
 
    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>