This is an exercise taken from the Javascript: From Fundamentals to Functional course by Bianca Gandolfo on FrontEnd Masters. The characters are taken from a game of Clue – a murder whodunit…
Here I have recreated a map() method in a slightly different way. Instead of attaching it to the array prototype, I created it as a function which can take in either an array or an object and process it.
On line 3, I test to see if the “list” passed in is an array. If so, I use a for loop to process the array. If it is not an array, I assume it is an object and use a for…in loop to process it. It returns an array of objects called suspectsList in either case.
let temp = []; const weapons = ["candlestick", "lead pipe", "revolver"]; const objWeapons = { weapon1: "candlestick", weapon2: "lead pipe", weapon3: "revolver" }; const _ = { map(list, func) { let temp = []; if (Array.isArray(list)) { for (let i = 0; i < list.length; i++) { temp.push(func(list[i])); } return temp; } else { let temp = []; for (key in list) { temp.push(func(list[key])); } return temp; } } }; const makeBroken = function(item) { return `broken ${item}`; }; console.log("===== From Array List ====="); const output1 = _.map(weapons, makeBroken); console.log(output1); // Output // ===== From Array List ===== // [ 'broken candlestick', 'broken lead pipe', 'broken revolver' ] console.log("===== From Object List ====="); const output2 = _.map(objWeapons, makeBroken); console.log(output2); // Output // ===== From Object List ===== // [ 'broken candlestick', 'broken lead pipe', 'broken revolver' ]