Я работаю над проблемой coderbyte в течение последних двух дней. Я думал, что я, наконец, его купил по какой-то причине, я продолжаю ошибаться.Режим поиска и медиана в ошибке Javascript
function comparemedianandmode(arr){
function findmode(arr){
mapping = {};
mode = 0;
for(var i = 0; i < arr.length; i++){
if(!mapping[arr[i]]){
mapping[arr[i]] = 0;
}
mapping[arr[i]] += 1;
}
for(prop in mapping){
if(mapping[prop] > mode){
var mode = parseInt(prop);
}
}
}
function findmedian(arr){
arr.sort(function(a,b){return a - b});
if(arr.length % 2 === 0){
var median = (arr[(arr.length/2)-1] + arr[arr.length/2])/2;
}
else{
var median = arr[(arr.length - 1)/2];
}
}
var answer = (median === mode) ? 1 : 0;
return answer
}
Когда я пытаюсь comparemedianandmode([1,2,3,3,3,4,5])
я получаю следующее сообщение об ошибке:
ReferenceError: median is not defined
Должно быть что-то простое, но я не могу показаться, чтобы понять это
EDIT
New Code:
function comparemedianandmode(arr){
var mode;
var median;
function findmode(arr){
mapping = {};
for(var i = 0; i < arr.length; i++){
if(!mapping[arr[i]]){
mapping[arr[i]] = 0;
}
mapping[arr[i]] += 1;
}
for(prop in mapping){
if(mapping[prop] > mode){
var mode = parseInt(prop);
}
}
}
var median
function findmedian(arr){
var median
arr.sort(function(a,b){return a - b});
if(arr.length % 2 === 0){
median = (arr[(arr.length/2)-1] + arr[arr.length/2])/2;
}
else{
median = arr[(arr.length - 1)/2];
}
}
var answer = (median === mode) ? 1 : 0;
return answer
}
comparemedianandmode([1,2,3,3,3,4,5])
=> 1
Почему я не могу просто не использовать 'var' внутри функции при определении режима и медиану. Я думал, что это определит его глобально? – theamateurdataanalyst
Нет, он не будет определять его глобально. Он определит его для этой функции. Он будет определять его только глобально, если он не входит в функцию. – Trott
gotcha thanks trott имеет смысл. – theamateurdataanalyst