diff --git a/sorting.js b/sorting.js new file mode 100644 index 0000000..27da0d0 --- /dev/null +++ b/sorting.js @@ -0,0 +1,1138 @@ +const strNums = [ + "1", + "4", + "1", + "5", + "9", + "2", + "6", + "5", + "3", + "5", + "8", + "9", + "7", + "9", + "3", + "2", + "3", + "8", + "4", + "6", + "2", + "6", + "4", + "3", + "3", + "8", + "3", + "2", + "7", + "9", + "5", + "0", + "2", + "8", + "8", + "4", + "1", + "9", + "7", + "1", + "6", + "9", + "3", + "9", + "9", + "3", + "7", + "5", + "1", + "0", + "5", + "8", + "2", + "0", + "9", + "7", + "4", + "9", + "4", + "4", + "5", + "9", + "2", + "3", + "0", + "7", + "8", + "1", + "6", + "4", + "0", + "6", + "2", + "8", + "6", + "2", + "0", + "8", + "9", + "9", + "8", + "6", + "2", + "8", + "0", + "3", + "4", + "8", + "2", + "5", + "3", + "4", + "2", + "1", + "1", + "7", + "0", + "6", + "7", + "9", + "8", + "2", + "1", + "4", + "8", + "0", + "8", + "6", + "5", + "1", + "3", + "2", + "8", + "2", + "3", + "0", + "6", + "6", + "4", + "7", + "0", + "9", + "3", + "8", + "4", + "4", + "6", + "0", + "9", + "5", + "5", + "0", + "5", + "8", + "2", + "2", + "3", + "1", + "7", + "2", + "5", + "3", + "5", + "9", + "4", + "0", + "8", + "1", + "2", + "8", + "4", + "8", + "1", + "1", + "1", + "7", + "4", + "5", + "0", + "2", + "8", + "4", + "1", + "0", + "2", + "7", + "0", + "1", + "9", + "3", + "8", + "5", + "2", + "1", + "1", + "0", + "5", + "5", + "5", + "9", + "6", + "4", + "4", + "6", + "2", + "2", + "9", + "4", + "8", + "9", + "5", + "4", + "9", + "3", + "0", + "3", + "8", + "1", + "9", + "6", + "4", + "4", + "2", + "8", + "8", + "1", + "0", + "9", + "7", + "5", + "6", + "6", + "5", + "9", + "3", + "3", + "4", + "4", + "6", + "1", + "2", + "8", + "4", + "7", + "5", + "6", + "4", + "8", + "2", + "3", + "3", + "7", + "8", + "6", + "7", + "8", + "3", + "1", + "6", + "5", + "2", + "7", + "1", + "2", + "0", + "1", + "9", + "0", + "9", + "1", + "4", + "5", + "6", + "4", + "8", + "5", + "6", + "6", + "9", + "2", + "3", + "4", + "6", + "0", + "3", + "4", + "8", + "6", + "1", + "0", + "4", + "5", + "4", + "3", + "2", + "6", + "6", + "4", + "8", + "2", + "1", + "3", + "3", + "9", + "3", + "6", + "0", + "7", + "2", + "6", + "0", + "2", + "4", + "9", + "1", + "4", + "1", + "2", + "7", + "3", + "7", + "2", + "4", + "5", + "8", + "7", + "0", + "0", + "6", + "6", + "0", + "6", + "3", + "1", + "5", + "5", + "8", + "8", + "1", + "7", + "4", + "8", + "8", + "1", + "5", + "2", + "0", + "9", + "2", + "0", + "9", + "6", + "2", + "8", + "2", + "9", + "2", + "5", + "4", + "0", + "9", + "1", + "7", + "1", + "5", + "3", + "6", + "4", + "3", + "6", + "7", + "8", + "9", + "2", + "5", + "9", + "0", + "3", + "6", + "0", + "0", + "1", + "1", + "3", + "3", + "0", + "5", + "3", + "0", + "5", + "4", + "8", + "8", + "2", + "0", + "4", + "6", + "6", + "5", + "2", + "1", + "3", + "8", + "4", + "1", + "4", + "6", + "9", + "5", + "1", + "9", + "4", + "1", + "5", + "1", + "1", + "6", + "0", + "9", + "4", + "3", + "3", + "0", + "5", + "7", + "2", + "7", + "0", + "3", + "6", + "5", + "7", + "5", + "9", + "5", + "9", + "1", + "9", + "5", + "3", + "0", + "9", + "2", + "1", + "8", + "6", + "1", + "1", + "7", + "3", + "8", + "1", + "9", + "3", + "2", + "6", + "1", + "1", + "7", + "9", + "3", + "1", + "0", + "5", + "1", + "1", + "8", + "5", + "4", + "8", + "0", + "7", + "4", + "4", + "6", + "2", + "3", + "7", + "9", + "9", + "6", + "2", + "7", + "4", + "9", + "5", + "6", + "7", + "3", + "5", + "1", + "8", + "8", + "5", + "7", + "5", + "2", + "7", + "2", + "4", + "8", + "9", + "1", + "2", + "2", + "7", + "9", + "3", + "8", + "1", + "8", + "3", + "0", + "1", + "1", + "9", + "4", + "9", + "1", + "2", + "9", + "8", + "3", + "3", + "6", + "7", + "3", + "3", + "6", + "2", + "4", + "4", + "0", + "6", + "5", + "6", + "6", + "4", + "3", + "0", + "8", + "6", + "0", + "2", + "1", + "3", + "9", + "4", + "9", + "4", + "6", + "3", + "9", + "5", + "2", + "2", + "4", + "7", + "3", + "7", + "1", + "9", + "0", + "7", + "0", + "2", + "1", + "7", + "9", + "8", + "6", + "0", + "9", + "4", + "3", + "7", + "0", + "2", + "7", + "7", + "0", + "5", + "3", + "9", + "2", + "1", + "7", + "1", + "7", + "6", + "2", + "9", + "3", + "1", + "7", + "6", + "7", + "5", + "2", + "3", + "8", + "4", + "6", + "7", + "4", + "8", + "1", + "8", + "4", + "6", + "7", + "6", + "6", + "9", + "4", + "0", + "5", + "1", + "3", + "2", + "0", + "0", + "0", + "5", + "6", + "8", + "1", + "2", + "7", + "1", + "4", + "5", + "2", + "6", + "3", + "5", + "6", + "0", + "8", + "2", + "7", + "7", + "8", + "5", + "7", + "7", + "1", + "3", + "4", + "2", + "7", + "5", + "7", + "7", + "8", + "9", + "6", + "0", + "9", + "1", + "7", + "3", + "6", + "3", + "7", + "1", + "7", + "8", + "7", + "2", + "1", + "4", + "6", + "8", + "4", + "4", + "0", + "9", + "0", + "1", + "2", + "2", + "4", + "9", + "5", + "3", + "4", + "3", + "0", + "1", + "4", + "6", + "5", + "4", + "9", + "5", + "8", + "5", + "3", + "7", + "1", + "0", + "5", + "0", + "7", + "9", + "2", + "2", + "7", + "9", + "6", + "8", + "9", + "2", + "5", + "8", + "9", + "2", + "3", + "5", + "4", + "2", + "0", + "1", + "9", + "9", + "5", + "6", + "1", + "1", + "2", + "1", + "2", + "9", + "0", + "2", + "1", + "9", + "6", + "0", + "8", + "6", + "4", + "0", + "3", + "4", + "4", + "1", + "8", + "1", + "5", + "9", + "8", + "1", + "3", + "6", + "2", + "9", + "7", + "7", + "4", + "7", + "7", + "1", + "3", + "0", + "9", + "9", + "6", + "0", + "5", + "1", + "8", + "7", + "0", + "7", + "2", + "1", + "1", + "3", + "4", + "9", + "9", + "9", + "9", + "9", + "9", + "8", + "3", + "7", + "2", + "9", + "7", + "8", + "0", + "4", + "9", + "9", + "5", + "1", + "0", + "5", + "9", + "7", + "3", + "1", + "7", + "3", + "2", + "8", + "1", + "6", + "0", + "9", + "6", + "3", + "1", + "8", + "5", + "9", + "5", + "0", + "2", + "4", + "4", + "5", + "9", + "4", + "5", + "5", + "3", + "4", + "6", + "9", + "0", + "8", + "3", + "0", + "2", + "6", + "4", + "2", + "5", + "2", + "2", + "3", + "0", + "8", + "2", + "5", + "3", + "3", + "4", + "4", + "6", + "8", + "5", + "0", + "3", + "5", + "2", + "6", + "1", + "9", + "3", + "1", + "1", + "8", + "8", + "1", + "7", + "1", + "0", + "1", + "0", + "0", + "0", + "3", + "1", + "3", + "7", + "8", + "3", + "8", + "7", + "5", + "2", + "8", + "8", + "6", + "5", + "8", + "7", + "5", + "3", + "3", + "2", + "0", + "8", + "3", + "8", + "1", + "4", + "2", + "0", + "6", + "1", + "7", + "1", + "7", + "7", + "6", + "6", + "9", + "1", + "4", + "7", + "3", + "0", + "3", + "5", + "9", + "8", + "2", + "5", + "3", + "4", + "9", + "0", + "4", + "2", + "8", + "7", + "5", + "5", + "4", + "6", + "8", + "7", + "3", + "1", + "1", + "5", + "9", + "5", + "6", + "2", + "8", + "6", + "3", + "8", + "8", + "2", + "3", + "5", + "3", + "7", + "8", + "7", + "5", + "9", + "3", + "7", + "5", + "1", + "9", + "5", + "7", + "7", + "8", + "1", + "8", + "5", + "7", + "7", + "8", + "0", + "5", + "3", + "2", + "1", + "7", + "1", + "2", + "2", + "6", + "8", + "0", + "6", + "6", + "1", + "3", + "0", + "0", + "1", + "9", + "2", + "7", + "8", + "7", + "6", + "6", + "1", + "1", + "1", + "9", + "5", + "9", + "0", + "9", + "2", + "1", + "6", + "4", + "2", + "0", + "1", + "9", + "8", + "9", +]; + +// Given 1000 digits of PI as strings, return an array of the digits as numbers +// can convert nums using map method +const stringsToNumbs = (numbers) => { + return numbers.map((num) => Number(num)); +}; + +console.log(stringsToNumbs(strNums)); + +// With the same numbers, find the sum of the even values +const sumEvens = (arr) => { + const nums = stringsToNumbs(arr); + const even = nums.filter((element) => element % 2 === 0); + // console.log(even); + const sum = even.reduce((acc, curr) => acc + curr, 0); + return sum; +}; + +console.log(sumEvens(strNums)); + +// Find the index of the first value when added to it's index = 512 (#ATX!!) +// get nums array +// for loop find first place where index + value === 512 +// break so only first iteration can occur + +// findIndex method works for this. +const atxIdx = (arr) => { + const nums = stringsToNumbs(arr); + // for (let i = 0; i < arr.length; i++) { + // if (i + nums[i] === 512) { + // console.log(`index: ${i}, value: ${nums[i]}`); + // break; + // } + // } + const ausTx = nums.findIndex((element, index) => element + index === 512); + console.log(`index: ${ausTx}, value: ${nums[ausTx]}`); +}; +atxIdx(strNums); +const weather = [ + { + id: 5743823523151872, + weather_state_name: "Light Cloud", + weather_state_abbr: "lc", + wind_direction_compass: "NNE", + created: "2018-07-11T20:53:03.251710Z", + applicable_date: "2018-07-11", + min_temp: 14.43, + max_temp: 23.36, + the_temp: 22.785, + wind_speed: 5.682503989556987, + wind_direction: 21.6264939172659, + air_pressure: 1024.45, + humidity: 58, + visibility: 8.683041040324504, + predictability: 70, + }, + { + id: 6188149969518592, + weather_state_name: "Heavy Cloud", + weather_state_abbr: "hc", + wind_direction_compass: "NE", + created: "2018-07-11T20:53:03.268190Z", + applicable_date: "2018-07-12", + min_temp: 14.81, + max_temp: 25.52, + the_temp: 24.61, + wind_speed: 3.2461141472739206, + wind_direction: 42.72552812997726, + air_pressure: 1024.605, + humidity: 54, + visibility: 10.633835898353615, + predictability: 71, + }, + { + id: 5742049676492800, + weather_state_name: "Showers", + weather_state_abbr: "s", + wind_direction_compass: "E", + created: "2018-07-11T20:53:03.947390Z", + applicable_date: "2018-07-13", + min_temp: 15.5525, + max_temp: 25.3475, + the_temp: 24.175, + wind_speed: 3.6572546846814604, + wind_direction: 90.32910675612557, + air_pressure: 1025.385, + humidity: 57, + visibility: 10.181166984808717, + predictability: 73, + }, + { + id: 6696130918219776, + weather_state_name: "Heavy Cloud", + weather_state_abbr: "hc", + wind_direction_compass: "SSW", + created: "2018-07-11T20:53:04.068570Z", + applicable_date: "2018-07-14", + min_temp: 15.915, + max_temp: 27.0925, + the_temp: 26.585, + wind_speed: 3.649847972759087, + wind_direction: 200.04283406736377, + air_pressure: 1024.4450000000002, + humidity: 52, + visibility: 11.14056410562316, + predictability: 71, + }, +]; + +//using a higher order function, create an array of the unique 'weather_state_name' values of the weather array. Your function should return the following array ['Light Cloud', 'Heavy Cloud', 'Showers'] + +// initialize output array as empty array +// use forEach to iterate over array elements +// if element is not contained within output array, push that element to the output array +const weatherStates = (arr) => { + const outputArr = []; + arr.forEach(function (element) { + if (!outputArr.includes(element.weather_state_name)) { + outputArr.push(element.weather_state_name); + } + }); + return outputArr; +}; + +console.log(weatherStates(weather)); + +// I used a higher order function via forEach method +// Correctly returns ['Light Cloud', 'Heavy Cloud', 'Showers'] + +//find the id of the object in weather that has a min_temp of 15.915 + +let idealTemp = (arr) => { + const [index] = arr.filter((element) => element.min_temp === 15.915); + return index.id; +}; +console.log(idealTemp(weather)); // 6696130918219776