has anyone ever been asked this in an interview? i don't understand how someone could be qualified and fail at the same time :/
EDIT:
i'm just going to leave you guys to indent this because i don't want anymore indenting wars mkay
; (function (ns) {
ns.runFizzBuzz = function (data) {
//TODO fix magic strings and put them into an enum
var isArray = Object.prototype.toString.call(data) === '[object Array]';
//GUARD: do not allow non-arrays
//TODO consider auto-wrapping non-arrays as arrays
if (!isArray) {
return "The test data must be formatted as an array";
}
//TODO consider how to handle cases where not each array item is a valid number
//TODO should be rewritten in a functional programming manner
var dataLength = data.length;
for (var g = 0; g < dataLength; g++) {
var currentItem = data[g];
//GUARD: do not allow null or undefined values
if (currentItem === undefined || currentItem === undefined) {
return "The test data has null or undefined values; processing was stopped";
}
//TODO ask interviewer how to handle cases where an item is both divisible by 3 and 5
if (currentItem % 3 === 0) {
data[g] = "Fizz";
} else if (currentItem % 5 === 0) {
data[g] = "Buzz";
}
}
return data;
};
})(window.interviewTestAnswers = window.interviewTestAnswers || {});
var fizzBuzzData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
window.interviewTestAnswers.runFizzBuzz(fizzBuzzData);
console.log(fizzBuzzData );
and for the love of god, don't write something this overengineered without asking your interviewer first