Array Exercises
// No1 function is_array(input){ const result = Array.isArray(input); return result; }console.log(is_array('w3resource')); console.log(is_array([1, 2, 4, 0])); // N02 function cloneArray(arr) { return arr.slice(0); } console.log(cloneArray([1, 2, 4, 0])); console.log(cloneArray([1, 2, [4, 0]])); // No3 function firstElements(arr, n) { if (n === undefined) { return arr[0]; } else { return arr.slice(0, n); } } console.log(firstElements([7, 9, 0, -2])); console.log(firstElements([],3)); console.log(firstElements([7, 9, 0, -2],3)); console.log(firstElements([7, 9, 0, -2],6)); console.log(firstElements([7, 9, 0, -2],-3)); // N04 function lastElements(arr, n) { if (n === undefined) { return arr[arr.length - 1]; } else { return arr.slice(-n); } } console.log(lastElements([7, 9, 0, -2])); console.log(lastElements([7, 9, 0, -2],3)); console.log(lastElements([7, 9, 0, -2],6)); // N05 const myColor =["Red", "Green", "White", "Black"]; const joinedString = myColor.join(", "); console.log(joinedString); // n06 function insertDashes(num) { var numStr = num.toString(); var result = ""; for (var i = 0; i < numStr.length; i++) { result += numStr[i]; if (parseInt(numStr[i]) % 2 === 0 && parseInt(numStr[i + 1]) % 2 === 0) { result += "-"; } } return result; } var inputNum = '025468'; var dashedNum = insertDashes(inputNum); console.log(dashedNum); // n07 var arr1 = [-3, 8, 7, 6, 5, -4, 3, 2, 1]; arr1.sort(function(a, b) { return a - b; }); var sortedArray = arr1.join(","); console.log(sortedArray); // n08 function findMostFrequentItem(arr) { var frequencyMap = {}; var maxFrequency = 0; var mostFrequentItem = null; for (var i = 0; i < arr.length; i++) { var currentItem = arr[i]; frequencyMap[currentItem] = (frequencyMap[currentItem] || 0) + 1; if (frequencyMap[currentItem] > maxFrequency) { maxFrequency = frequencyMap[currentItem]; mostFrequentItem = currentItem; } } return mostFrequentItem; } var myArray = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3]; var mostFrequent = findMostFrequentItem(myArray); console.log(mostFrequent); // n09 function swapCase(str) { var swappedStr = ""; for (var i = 0; i < str.length; i++) { var currentChar = str[i]; if (currentChar === currentChar.toUpperCase()) { swappedStr += currentChar.toLowerCase(); } else { swappedStr += currentChar.toUpperCase(); } } return swappedStr; } var inputString = 'The Quick Brown Fox'; var swappedString = swapCase(inputString); console.log(swappedString); // n010 var a = [[1, 2, 1, 24], [8, 11, 9, 4], [7, 0, 7, 27], [7, 4, 28, 14], [3, 10, 26, 7]]; for (var i = 0; i < a.length; i++) { for (var j = 0; j < a[i].length; j++) { console.log(a[i][j]); } } // N011 function sumOfSquares(vector) { var sum = 0; for (var i = 0; i < vector.length; i++) { sum += Math.pow(vector[i], 2); } return sum; } var numericalVector = [1, 2, 3, 4, 5]; var result = sumOfSquares(numericalVector); console.log(result); // N012 function computeSumAndProduct(arr) { var sum = 0; var product = 1; for (var i = 0; i < arr.length; i++) { sum += arr[i]; product *= arr[i]; } return { sum: sum, product: product }; } var integers = [1, 2, 3, 4, 5]; var result = computeSumAndProduct(integers); console.log("Sum: " + result.sum); console.log("Product: " + result.product); // N013 // var blankArray = []; // while (true) { // var userInput = prompt("Enter element(or 'done' to finish):"); // if (userInput === "done") { // break; // } else { // blankArray.push(userInput); // } // } // console.log("Array elements: " + blankArray.join(", ")); // N014 function removeDuplicates(arr) { var uniqueArray = []; var lowercaseMap = {}; for (var i = 0; i < arr.length; i++) { var currentItem = arr[i].toLowerCase(); if (!lowercaseMap[currentItem]) { uniqueArray.push(arr[i]); lowercaseMap[currentItem] = true; } } return uniqueArray; } var inputArray = ["apple", "Banana", "banana", "Orange", "apple"]; var result = removeDuplicates(inputArray); console.log(result); // N015 var color = ["Blue", "Green", "Red", "Orange", "Violet", "Indigo", "Yellow"]; var o = ["th", "st", "nd", "rd"]; for (var i = 0; i < color.length; i++) { var choice = (i + 1) + o[(i + 1) % 10] || o[0]; console.log(choice + " choice is " + color[i] + "."); } // N016 function findLeapYears(startYear, endYear) { var leapYears = []; for (var year = startYear; year <= endYear; year++) { if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) { leapYears.push(year); } } return leapYears; } var startYear = 2000; var endYear = 2020; var result = findLeapYears(startYear, endYear); console.log("Leap years between " + startYear + " and " + endYear + ":"); console.log(result); // N017 function shuffleArray(array) { var currentIndex = array.length; var temporaryValue, randomIndex; while (currentIndex !== 0) { randomIndex = Math.floor(Math.random() * currentIndex); currentIndex--; temporaryValue = array[currentIndex]; array[currentIndex] = array[randomIndex]; array[randomIndex] = temporaryValue; } return array; } var myArray = [1, 2, 3, 4, 5]; var shuffledArray = shuffleArray(myArray); console.log(shuffledArray); // N018 function binarySearch(arr, target) { var left = 0; var right = arr.length - 1; while (left <= right) { var mid = Math.floor((left + right) / 2); if (arr[mid] === target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; } var sortedArray = [1, 2, 3, 4, 5, 7, 8, 9]; var targetValue = 4; var result = binarySearch(sortedArray, targetValue); if (result !== -1) { console.log("Element found at index " + result); } else { console.log("Element not found in the array"); } // N019 var array1 = [1, 0, 2, 3, 4]; var array2 = [3, 5, 6, 7, 8, 13]; var result = []; var maxLength = Math.max(array1.length, array2.length); for (var i = 0; i < maxLength; i++) { var sum = (array1[i] || 0) + (array2[i] || 0); result.push(sum); } console.log(result); // N020 function findDuplicates(array) { var duplicates = []; var seen = {}; for (var i = 0; i < array.length; i++) { var currentValue = array[i]; if (seen[currentValue] === undefined) { seen[currentValue] = 1; } else { if (seen[currentValue] === 1) { duplicates.push(currentValue); } seen[currentValue]++; } } return duplicates; } var myArray = [1, 2, 3, 2, 4, 3, 5, 6, 5, 7]; var result = findDuplicates(myArray); console.log("Duplicate values: " + result); // N021 function flattenArray(array, shallow = false) { var result = []; array.forEach(function (element) { if (Array.isArray(element) && !shallow) { var flattened = flattenArray(element); result.push(...flattened); } else { result.push(element); } }); return result; } var nestedArray = [1, [2, [3, [4, 5], 6], 7], 8]; var flattenedArray = flattenArray(nestedArray); console.log(flattenedArray); // N022 function computeUnion(array1, array2) { var unionSet = new Set([...array1, ...array2]); var unionArray = Array.from(unionSet); return unionArray; } var array1 = [1, 2, 3, 4, 5]; var array2 = [4, 5, 6, 7, 8]; var union = computeUnion(array1, array2); console.log(union); // N023 function difference(array1, array2) { function flattenArray(array) { var flattened = []; array.forEach(function (element) { if (Array.isArray(element)) { flattened.push(...flattenArray(element)); } else { flattened.push(element); } }); return flattened; } var flatArray1 = flattenArray(array1); var flatArray2 = flattenArray(array2); var differenceArray = flatArray1.filter(function (element) { return !flatArray2.includes(element); }); return differenceArray; } console.log(difference([1, 2, 3], [100, 2, 1, 10])); console.log(difference([1, 2, 3, 4, 5], [1, [2], [3, [[4]]], [5, 6]])); console.log(difference([1, 2, 3], [100, 2, 1, 10])); // N024 function removeFalsyValues(array) { var filteredArray = array.filter(function (element) { return !!element; }); return filteredArray; } var sampleArray = [NaN, 0, 15, false, -22, '', undefined, 47, null]; var cleanedArray = removeFalsyValues(sampleArray); console.log(cleanedArray); // N025 function sortByTitle(array) { array.sort(function (a, b) { var titleA = a.title.toUpperCase(); var titleB = b.title.toUpperCase(); if (titleA < titleB) { return -1; } if (titleA > titleB) { return 1; } return 0; }); return array; } var library = [ { author: 'Bill Gates', title: 'The Road Ahead', libraryID: 1254 }, { author: 'Steve Jobs', title: 'Walter Isaacson', libraryID: 4264 }, { author: 'Suzanne Collins', title: 'Mockingjay: The Final Book of The Hunger Games', libraryID: 3245 } ]; var sortedLibrary = sortByTitle(library); console.log(sortedLibrary); // N026 function findPair(numbers, target) { var indices = []; for (var i = 0; i < numbers.length; i++) { for (var j = i + 1; j < numbers.length; j++) { if (numbers[i] + numbers[j] === target) { indices.push(i, j); return indices; } } } return indices; } var numbers = [10, 20, 10, 40, 50, 60, 70]; var target = 50; var pairIndices = findPair(numbers, target); console.log(pairIndices); // // N027 // function getPropertyValues(array, property) { // var values = array.map(function (element) { // return element[property]; // }); // return values; // } // var sampleArray = [NaN, 0, 15, false, -22, '', undefined, 47, null]; // var property = 'property'; // var propertyValues = getPropertyValues(sampleArray, property); // console.log(propertyValues); // N028 function longestCommonStartingSubstring(strings) { if (strings.length === 0) { return ''; } var prefix = ''; for (var i = 0; i < strings[0].length; i++) { var char = strings[0][i]; for (var j = 1; j < strings.length; j++) { if (strings[j][i] !== char) { return prefix; } } prefix += char; } return prefix; } var strings = ['go', 'google']; var longestCommonSubstring = longestCommonStartingSubstring(strings); console.log(longestCommonSubstring); // N029 function num_string_range(start, end, step) { var range = []; var current = start.charCodeAt(0); while (current <= end.charCodeAt(0)) { range.push(String.fromCharCode(current)); current += step; } return range; } var result = num_string_range('a', 'z', 2); console.log(result); // N030 function merge_array(array1, array2) { var mergedArray = array1.concat(array2); var uniqueArray = [...new Set(mergedArray)]; return uniqueArray; } var array1 = [1, 2, 3]; var array2 = [2, 30, 1]; var mergedArray = merge_array(array1, array2); console.log(mergedArray); // N031 function remove_array_element(array, element) { var newArray = array.filter(function (value) { return value !== element; }); return newArray; } var array = [2, 5, 9, 6]; var element = 5; var modifiedArray = remove_array_element(array, element); console.log(modifiedArray); // N032 function contains(arr, element) { return arr.includes(element); } var arr = [2, 5, 9, 6]; var element = 5; console.log(contains(arr, element)); // N033 var originalArray = [1, 2, 3, 4, 5]; var newArray = originalArray; originalArray = []; console.log(originalArray); // Output: [] console.log(newArray); // Output: [1, 2, 3, 4, 5] // N034 function nthLargest(arr, n) { var sortedArray = arr.sort(function(a, b) { return b - a; }); return sortedArray[n - 1]; } var array = [43, 56, 23, 89, 88, 90, 99, 652]; var n = 4; console.log(nthLargest(array, n)); // N035 function getRandomItems(arr, count) { var randomItems = []; for (var i = 0; i < count; i++) { var randomIndex = Math.floor(Math.random() * arr.length); randomItems.push(arr[randomIndex]); } return randomItems; } var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var itemCount = 3; console.log(getRandomItems(array, itemCount)); // N036 function arrayFilled(length, value) { return Array(length).fill(value); } console.log(arrayFilled(6, 0)); console.log(arrayFilled(4, 11)); // N037 function arrayFilled(length, value) { return Array(length).fill(value); } console.log(arrayFilled(3, 'default value')); console.log(arrayFilled(4, 'password')); // N038 function move(array, fromIndex, toIndex) { // Check if the indices are within the bounds of the array if (fromIndex < 0 || fromIndex >= array.length || toIndex < 0 || toIndex >= array.length) { console.log("Invalid indices provided."); return array; } // Remove the element from the 'fromIndex' var element = array.splice(fromIndex, 1)[0]; // Insert the element at the 'toIndex' array.splice(toIndex, 0, element); return array; } console.log(move([10, 20, 30, 40, 50], 0, 2)); console.log(move([10, 20, 30, 40, 50], -1, -2)); // N039 function filterArrayValues(array) { return array.filter(function(value) { return value !== false && value !== null && value !== 0 && value !== ''; }); } console.log(filterArrayValues([58, '', 'abcd', true, null, false, 0])); // N040 function arrayRange(start, length) { var array = []; for (var i = 0; i < length; i++) { array.push(start + i); } return array; } console.log(arrayRange(1, 4)); console.log(arrayRange(-6, 4)); // N041 function rangeBetween(start, end) { var array = []; for (var i = start; i <= end; i++) { array.push(i); } return array; } console.log(rangeBetween(4, 7)); console.log(rangeBetween(-4, 7)); // N042 function getUniqueElements(arr1, arr2) { var combinedArray = arr1.concat(arr2); var uniqueElements = combinedArray.filter(function (value, index, self) { return self.indexOf(value) === index; }); return uniqueElements; } console.log(getUniqueElements([1, 2, 3], [100, 2, 1, 10])); console.log(getUniqueElements([1, 2, 3, 4, 5], [1, [2], [3, [[4]]],[5,6]])); console.log(getUniqueElements([1, 2, 3], [100, 2, 1, 10])); // N043 function unzip(arr) { var result = []; var maxLength = arr.reduce(function(max, subArray) { return Math.max(max, subArray.length); }, 0); for (var i = 0; i < maxLength; i++) { var temp = []; for (var j = 0; j < arr.length; j++) { if (i < arr[j].length) { temp.push(arr[j][i]); } } result.push(temp); } return result; } console.log(unzip([['a', 1, true], ['b', 2, false]])); console.log(unzip([['a', 1, true], ['b', 2]])); // N044 function indexOn(arr, keyFn) { var result = {}; for (var i = 0; i < arr.length; i++) { var obj = arr[i]; var key = keyFn(obj); delete obj[key]; result[key] = obj; } return result; } var array = [ { id: 10, name: 'apple' }, { id: 20, name: 'orange' } ]; var keyFn = function(x) { return x.id; }; console.log(indexOn(array, keyFn)); // N045 function findUniqueValues(numbers) { var uniqueValues = []; for (var i = 0; i < numbers.length; i++) { if (uniqueValues.indexOf(numbers[i]) === -1) { uniqueValues.push(numbers[i]); } } return uniqueValues; } var numbers1 = [1, 2, 2, 3, 4, 4, 5]; var numbers2 = [1, 2, 3, 4, 5]; var numbers3 = [1, -2, -2, 3, 4, -5, -6, -5]; console.log(findUniqueValues(numbers1)); console.log(findUniqueValues(numbers2)); console.log(findUniqueValues(numbers3)); // N046 function generatePermutations(arr) { var permutations = []; function permuteHelper(currentPerm, remainingElems) { if (remainingElems.length === 0) { permutations.push(currentPerm); } else { for (var i = 0; i < remainingElems.length; i++) { var newPerm = currentPerm.concat(remainingElems[i]); var newRemaining = remainingElems.slice(0, i).concat(remainingElems.slice(i + 1)); permuteHelper(newPerm, newRemaining); } } } permuteHelper([], arr); return permutations; } var arr1 = [1, 33, 5]; var arr2 = [1, 3, 5, 7]; var arr3 = [2, 4]; console.log(generatePermutations(arr1)); console.log(generatePermutations(arr2)); console.log(generatePermutations(arr3)); // N047 function removeFalseValues(objOrArr) { if (Array.isArray(objOrArr)) { return objOrArr.filter(Boolean).map(removeFalseValues); } else if (typeof objOrArr === 'object' && objOrArr !== null) { return Object.entries(objOrArr).reduce((acc, [key, value]) => { const cleanedValue = removeFalseValues(value); if (cleanedValue !== false) { acc[key] = cleanedValue; } return acc; }, {}); } return objOrArr; } const obj = { a: null, b: false, c: true, d: 0, e: 1, f: '', g: 'a', h: [null, false, '', true, 1, 'a'], i: { j: 0, k: false, l: 'a' } }; const cleanedObj = removeFalseValues(obj); console.log(cleanedObj); // N048 function isPrime(num) { if (num <= 1) { return false; } for (let i = 2; i <= Math.sqrt(num); i++) { if (num % i === 0) { return false; } } return true; } function allPrimes(arr) { for (let i = 0; i < arr.length; i++) { if (!isPrime(arr[i])) { return false; } } return true; } var arr1 = [2, 3, 5, 7]; var arr2 = [2, 3, 5, 7, 8]; console.log(allPrimes(arr1)); // true console.log(allPrimes(arr2)); // false // N049 function findThirdSmallest(arr) { arr.sort((a, b) => a - b); return arr[2]; } var arr1 = [2, 3, 5, 7, 1]; var arr2 = [2, 3, 0, 5, 7, 8, -2, -4]; console.log(findThirdSmallest(arr1)); // 3 console.log(findThirdSmallest(arr2)); // 0 // N050 function sumOfNumbers(arr) { let sum = 0; for (let i = 0; i < arr.length; i++) { if (typeof arr[i] === 'number') { sum += arr[i]; } } return sum; } var arr1 = [2, "11", 3, "a2", false, 5, 7, 1]; var arr2 = [2, 3, 0, 5, 7, 8, true, false]; console.log(sumOfNumbers(arr1)); // 18 console.log(sumOfNumbers(arr2)); // 25 // N051 function isFactorChain(arr) { for (let i = 1; i < arr.length; i++) { if (arr[i] % arr[i - 1] !== 0) { return false; } } return true; } var arr1 = [2, 4, 8, 16, 32]; var arr2 = [2, 4, 16, 32, 64]; var arr3 = [2, 4, 16, 32, 68]; console.log(isFactorChain(arr1)); // true console.log(isFactorChain(arr2)); // true console.log(isFactorChain(arr3)); // false // N052 function getNaNIndexes(arr) { const indexes = []; for (let i = 0; i < arr.length; i++) { if (isNaN(arr[i])) { indexes.push(i); } } return indexes; } var arr1 = [2, NaN, 8, 16, 32]; var arr2 = [2, 4, NaN, 16, 32, NaN]; var arr3 = [2, 4, 16, 32]; console.log(getNaNIndexes(arr1)); // [1] console.log(getNaNIndexes(arr2)); // [2, 5] console.log(getNaNIndexes(arr3)); // [] // N053 function countArrays(arr) { let count = 0; for (let i = 0; i < arr.length; i++) { if (Array.isArray(arr[i])) { count++; count += countArrays(arr[i]); // Recursively count arrays inside nested arrays } } return count; } var arr1 = [2, 8, [6], 3, 3, 5, 3, 4, [5, 4]]; var arr2 = [2, 8, [6, 3, 3], [4], 5, [3, 4, [5, 4]]]; console.log(countArrays(arr1)); // 2 console.log(countArrays(arr2)); // 3