【问题标题】:find all digits in a given Array with javascript使用javascript查找给定数组中的所有数字
【发布时间】:2021-02-14 13:08:40
【问题描述】:

所以我需要使用 javascript 在给定数组中查找从 1 到 9 的所有数字。

示例 findAllDigits([5175, 4538, 2926, 5057, 6401, 4376, 2280, 6137, 8798, 9083] 返回找到所有 1 到 9 个数字时检查的最后一个数字。在本例中为 5057 如果给定数组没有从 1 到 9 的所有数字,则返回“缺失数字”。

我什至不知道如何处理它,希望你能帮忙。

谢谢

【问题讨论】:

    标签: javascript arrays loops for-loop numbers


    【解决方案1】:
    let data = [123456789, 41358, 2926, 1017];
    let filled = [];
    const findAllDigits = (array) => {
      for (let index = 0; index < array.length; index++) {
        const n = array[index];
        let arr = Array.from(String(n), Number);
        filled = [...filled, ...arr];
        let len = [...new Set(filled)].length;
        if (len === 9) return array[index +1];
      }
      let missing = [];
      for (let index = 1; index <= 9; index++) {
        if (!filled.includes(index)) {
          missing.push(index);
        }
      }
      return Number(missing.toString());
    };
    
    console.log(findAllDigits(data));
    

    【讨论】:

    • @SashaMarkus 立即尝试
    【解决方案2】:

    您可以使用Set 并收集字符串化数字的所有数字/字符。

    要返回想要的最后一个数字,您可以使用Array#find 并检查集合中的size 是否为十。

    const findAllDigits = array => array.find((digits => value => {
        [...value.toString()].forEach(Set.prototype.add, digits);
        return digits.size === 10;
    })(new Set));
    
    console.log(findAllDigits([5175, 4538, 2926, 5057, 6401, 4376, 2280, 6137, 8798, 9083])); // 5057

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2019-10-06
      • 2018-11-11
      • 2018-08-18
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多