Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

129
Views
Finding first occurrence of each digit in an array

Taking each four digit number of an array in turn, return the number that you are on when all of the digits 0-9 have been discovered. If not all of the digits can be found, return "Missing digits!"

I've tried to loop through then set a conditional if (i != i+1) push into new array this just gave me the array, it's apparent my logic is wrong. could anyone help me out

For example calling this function with

arr = findAllDigits([5175, 4538, 2926, 5057, 6401, 4376, 2280, 6137, 8798, 9083]) 

the code should return 5057.

While calling

arr = findAllDigits([4883, 3876, 7769, 9846, 9546, 9634, 9696, 2832, 6822, 6868]) 

should return "missing numbers"

function findAllDigits(arr) {
  newArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] != arr[i + 1]) newArr.push(arr[i]);
    console.log(newArr);
  }
}

Do I need to split because it is taking everything before the comma as one number, then iterate over?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

You can use Set here

Loop over the array and then create a set, You have to return the current number if set size becomes 10 because you need to check 0-9

function findAllDigits(arr) {
  const set = new Set();
  for (let n of arr) {
    String(n)
      .split("")
      .forEach((c) => set.add(c));
    if (set.size === 10) return n;
  }
  return "Missing digits!";
}

const arr1 = [5175, 4538, 2926, 5057, 6401, 4376, 2280, 6137, 8798, 9083];
const arr2 = [4883, 3876, 7769, 9846, 9546, 9634, 9696, 2832, 6822, 6868];
console.log(findAllDigits(arr1));
console.log(findAllDigits(arr2));

about 4 years ago · Juan Pablo Isaza Report

0

Your for loop is only checking to see if the array entry is equal to the next one. You need to split up the digits inside each entry and store them individually:

function findAllDigits(arr) {
  newArr = [];
  for (let i = 0; i < arr.length; i++) {
    // now iterate the individual digits
    const entryAsString = arr[i].toString();
    for (let j = 0; j < entryAsString.length; j++) {
      // if we haven't seen the digit before, add it to the array
      if(!newArr.includes(j) {
        newArr.push(j);
      }
    }
    // we know we have all digits when newArr is 10 entries long
    if (newArr.length) {
      console.log(arr[i]);
      // you can also return this value here
    }
  }
}
about 4 years ago · Juan Pablo Isaza Report

0

One more solution:

const arr1 = [5175, 4538, 2926, 5057, 6401, 4376, 2280, 6137, 8798, 9083];
const arr2 = [4883, 3876, 7769, 9846, 9546, 9634, 9696, 2832, 6822, 6868];
            
const findAllDigits = (arr) => {

    // Declare new Set: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
  const digits = new Set();

    // return the first item from array that fits the condition, 
    // find() method: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
  return arr.find((curr) => (

      // String(5175) -> '5175' : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
      // [...'5175'] ->  ['5','1','7','5'] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
      // .forEach(digits.add, digits) - forEach with callback function and context : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
      // comma operator lets get rid of return : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
    [...String(curr)].forEach(digits.add, digits),

      // condition - is find() method need to return an item  
    (digits.size === 10)
     
    // if returned value is not undefined or null return finded number oterwise error string
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
  )) ?? "Missing digits!";
};
                
console.log(findAllDigits(arr1)); //5057
console.log(findAllDigits(arr2)); //Missing digits!
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!