Skip to content
This repository was archived by the owner on Feb 20, 2019. It is now read-only.

feat(largest): finds largest number in an array #229

Merged
merged 1 commit into from
Feb 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 74 additions & 72 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,91 +1,92 @@
import reverseArrayInPlace from './reverseArrayInPlace'
import isEven from './is-even'
import add from './add'
import arrayAverage from './array-average'
import arrayFill from './array-fill'
import median from './array-median'
import BitwiseAnd from './BitwiseAnd'
import checkPalindrome from './checkPalindrome'
import contains from './contains'
import capitalizeFirstLetter from './convert-first-letter-to-capital'
import revstring from './revstring'
import initArray from './init-array'
import reduce from './reduce-to-tally'
import convertToRoman from './convertToRoman'
import copyArrayByValue from './copyArrayByValue'
import cube from './cube'
import curry from './curry'
import debounce from './debounce'
import dec2bin from './dec2bin'
import dec2hex from './dec2hex'
import descendingOrder from './descending-order'
import divide from './divide'
import endsWith from './endsWith'
import fibonacciSum from './fibonacciSum'
import find from './find'
import first from './first'
import flatten from './flatten'
import getQueryStringParam from './get-query-string-param'
import snakeToCamel from './snake-to-camel'
import padLeft from './pad-left'
import lessThan from './less-than'
import randomInteger from './random-integer'
import arrayFill from './array-fill'
import sortObjectsArray from './sort-objects-array'
import objectValuesToString from './object-values-to-string'
import gcd from './gcd'
import generatePassword from './generate-password'
import getObjectSize from './get-object-size'
import isArray from './is-array'
import validateEmail from './validateEmail'
import getOrdinalSuffix from './get-ordinal-suffix'
import getQueryStringParam from './get-query-string-param'
import getQueryStringValue from './get-query-string-value'
import getMiddle from './getMiddle'
import hex2rgb from './hex2rgb'
import inchesToMetric from './inches-to-metric'
import initArray from './init-array'
import isArray from './is-array'
import isEven from './is-even'
import isFunction from './is-function'
import isNullOrWhitespace from './is-null-or-whitespace'
import isNumeric from './is-numeric'
import isOdd from './is-odd'
import isPrime from './is-prime'
import isToday from './is-today'
import startsWith from './startsWith'
import largest from './largest'
import last from './last'
import lcm from './lcm'
import isLeapYear from './leap-year'
import lessThan from './less-than'
import makeObjectIterable from './makeObjectIterable'
import max from './max'
import mod from './mod'
import mode from './mode-array'
import multiply from './multiply'
import numberToString from './numberToString'
import objectValuesToString from './object-values-to-string'
import occurrences from './occurrences'
import padLeft from './pad-left'
import randomInteger from './random-integer'
import range from './range'
import reduce from './reduce-to-tally'
import reduceCount from './reduceCount'
import removeAccents from './remove-accents'
import removeDuplicates from './remove-duplicates'
import removeFalsy from './remove-falsy'
import add from './add'
import removeElementFromArray from './removeElementFromArray'
import removeProperty from './removeProperty'
import reverse from './reverse'
import reverseArrayInPlace from './reverseArrayInPlace'
import revstring from './revstring'
import rollDice from './rollDice'
import round from './round'
import searchAndReplace from './search-and-replace'
import shallowEqual from './shallow-equal'
import slugify from './slugify'
import snakeToCamel from './snake-to-camel'
import sortObjectsArray from './sort-objects-array'
import sqrt from './sqrt'
import square from './square'
import startsWith from './startsWith'
import subtract from './subtract'
import subtraction from './subtraction'
import divide from './divide'
import multiply from './multiply'
import square from './square'
import cube from './cube'
import sum from './sum'
import dec2hex from './dec2hex'
import dec2bin from './dec2bin'
import searchAndReplace from './search-and-replace'
import sqrt from './sqrt'
import toPower from './to-power'
import truncate from './truncate'
import mod from './mod'
import shallowEqual from './shallow-equal'
import swapCase from './swap-case'
import endsWith from './endsWith'
import round from './round'
import checkPalindrome from './checkPalindrome'
import isFunction from './is-function'
import isOdd from './is-odd'
import isNumeric from './is-numeric'
import max from './max'
import slugify from './slugify'
import convertToRoman from './convertToRoman'
import gcd from './gcd'
import range from './range'
import contains from './contains'
import getOrdinalSuffix from './get-ordinal-suffix'
import arrayAverage from './array-average'
import find from './find'
import median from './array-median'
import timeDifference from './timeDifference'
import isPrime from './is-prime'
import swapElements from './swapElements'
import reverse from './reverse'
import removeAccents from './remove-accents'
import getQueryStringValue from './get-query-string-value'
import isLeapYear from './leap-year'
import removeElementFromArray from './removeElementFromArray'
import generatePassword from './generate-password'
import tail from './tail'
import makeObjectIterable from './makeObjectIterable'
import fibonacciSum from './fibonacciSum'
import lcm from './lcm'
import occurrences from './occurrences'
import getMiddle from './getMiddle'
import debounce from './debounce'
import curry from './curry'
import textJustification from './textJustification'
import removeProperty from './removeProperty'
import temperatureConverter from './temperatureConverter'
import last from './last'
import descendingOrder from './descending-order'
import reduceCount from './reduceCount'
import BitwiseAnd from './BitwiseAnd'
import copyArrayByValue from './copyArrayByValue'
import textJustification from './textJustification'
import timeDifference from './timeDifference'
import timeSince from './timeSince'
import first from './first'
import mode from './mode-array'
import rollDice from './rollDice'
import inchesToMetric from './inches-to-metric'
import numberToString from './numberToString'
import toPower from './to-power'
import truncate from './truncate'
import validateEmail from './validateEmail'

export {
reverseArrayInPlace,
Expand Down Expand Up @@ -176,4 +177,5 @@ export {
rollDice,
inchesToMetric,
numberToString,
largest,
}
26 changes: 26 additions & 0 deletions src/largest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
export default largest

/**
* Original Source: https://stackoverflow.com/a/33498918/9713990
*
* This method will find the largest element in an array
*
* @param {Array} array - the array
* @return {Number | null} - Largest number or null (in case of empty array)
*/
function largest(array) {
if (array.length <= 0) {
return null
}
return Math.max(...array)
}

// This is great in case of small array but in large size array it fails throwing this error
// RangeError: Maximum call stack size exceeded
// In case of large array size (eg. 10000000) we can use this

/*
* return array.sort().pop()
*
* sorts the array in ascending order and returns the last item (largest) using * pop() function
*/
14 changes: 14 additions & 0 deletions test/largest.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import test from 'ava'
import { largest } from '../src'

test('gets largest number from array', t => {
const array = [23, 45, 25, 67, 24, 86, 12, 94, 37]
const largestItem = largest(array)
t.deepEqual(largestItem, 94)
})

test('return null in case of empty array', t => {
const array = []
const largestItem = largest(array)
t.deepEqual(largestItem, null)
})