Link to home
Start Free TrialLog in
Avatar of juan field
juan field

asked on

How can i make my code return a zero when there are no numbers in the array?

function getLargestNumberAmongMixedElements(arr) {
  var result = -1;
  if(arr.length === 0){
      result = result + 1;
  }
  for(var i = 0; i < arr.length; i++){
    if(arr[i] > result ){
        result = arr[i];
    }if(arr[i] === isNaN){
        result = result + 1;
    }
  }
  return result;
}

console.log(getLargestNumberAmongMixedElements([3, 'word', 5, 'up', 3, 1]));
Avatar of zephyr_hex (Megan)
zephyr_hex (Megan)
Flag of United States of America image

You could do something like this:

if(!arr.join().split().some(function (ch) { return parseInt(ch) })) {
     return 0;
}

Open in new window


Demo here: https://jsfiddle.net/zephyr_hex/f88p68a9/

var array1 = [3, 'word', 5, 'up', 3, 1];
console.log(array1.join().split().some(function (ch) { return parseInt(ch) }));
/* returns true */
var array2 = ['df', 'word', 'sdf', 'up', 'csdf', 'sd'];
console.log(array2.join().split().some(function (ch) { return parseInt(ch) }));
/* returns false */

Open in new window

Avatar of Julian Hansen
... just initialise result to 0 like this
function getLargestNumberAmongMixedElements(arr) {
  // Default result to 0
  // If array is empty loop won't run and default will return
  var result = 0;
  for(var i = 0; i < arr.length; i++){
    if(arr[i] > result ){
        result = arr[i];
    }if(arr[i] === isNaN){
        result = result + 1;
    }
  }
  return result;
}

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of zephyr_hex (Megan)
zephyr_hex (Megan)
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Hi Juan,
Please try this..

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <script type="text/javascript">
        function getMaximumValue() {

           
            var arrOfValues = [1, 21, 3, 'Pawan', 4, 'Sumit'];
            var maxValueDisplayControl = document.getElementById('maxValue');
            var maxValue = 0;

           for (var i = 0; i < arrOfValues.length; i++) {
                var valueToCompare = arrOfValues[i];

                if (parseInt(valueToCompare) !== NaN) {


                    if (valueToCompare > maxValue) {
                        maxValue = valueToCompare
                    }
                }
            }


            maxValueDisplayControl.innerText = "Maximum value  is " + maxValue;
        }

           window.onload = function () {
            getMaximumValue();
        };

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <span id="maxValue"></span>
    </div>
    </form>
</body>
</html>

Open in new window


Hope it helps!
Having re-read the requirement, I believe reduce() should be considered for this
<script>
function getLargestNumberAmongMixedElements(arr) { 
  var currentMax = 0;
  var result = arr.reduce(function(currentMax, b) {
    var val = isNaN(b) ? 0 : b;
    return Math.max(currentMax, val);
  }, 0);
  
  return result;
}
// Test empty case
var data = [];
console.log(getLargestNumberAmongMixedElements(data));

// Test mixed case
var data = [3, 'word', 5, 'up', 3, 1];
console.log(getLargestNumberAmongMixedElements(data));
</script>

Open in new window

Avatar of juan field
juan field

ASKER

Gracias very much