首页 > 解决方案 > 查找数组中每个数字的第一次出现

问题描述

依次取数组的每个四位数字,返回找到所有数字 0-9 时您所在的数字。如果无法找到所有数字,则返回“缺少数字!”

我试图循环然后设置一个条件 if (i != i+1) push into new array 这只是给了我数组,很明显我的逻辑是错误的。谁能帮帮我

例如调用这个函数

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

代码应返回 5057。

打电话时

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

应该返回“缺失的数字”

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);
  }
}

我是否需要拆分,因为它将逗号之前的所有内容都作为一个数字,然后迭代?

标签: javascriptarrays

解决方案


您可以在此处使用设置

循环array然后创建一个set,如果set大小变为,则必须返回当前数字,10因为您需要检查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));


推荐阅读