【问题标题】:Filtering a set of letters from an array in Javascript在Javascript中从数组中过滤一组字母
【发布时间】:2021-10-04 17:26:32
【问题描述】:

我正在尝试使用 .filte() 方法从数组中提取一些元音,但在找到第一个字母的实例后,代码不会在下一个字母上继续。预期的输出是 ['a','a ','i'] 但它只显示 ['a','a'] 这是代码

function vowelsAndConsonants(s) {
  const letters = s.toString().split("");
  console.log(letters);

  let vowels = letters.filter((letter) => {
    return letter.includes("a", "e", "i", "o", "u");
  });

  console.log(vowels);
}

vowelsAndConsonants("javascript");

【问题讨论】:

标签: javascript arrays filter


【解决方案1】:

这是获取元音的一种方法

function vowelsAndConsonants(s) {
  const letters = s.toString().split("");

  let vowels = letters.filter((letter) => {
    return ['a', 'e', 'i', 'o', 'u'].indexOf(letter) !== -1
  });

  console.log(vowels);
}

vowelsAndConsonants("javascript");

【讨论】:

  • 谢谢这个工作
【解决方案2】:

include 方法只能有一个参数,参见this website,最简单的测试方法是使用 if 测试值:

const vowels = letters.filter((letter) => {
    if (letter === "a" || letter === "e" || letter === "i" || letter === "o" || letter === "u" || letter === "y") 
        return (letter);
    return("");
});

【讨论】:

    【解决方案3】:

    你也可以使用正则表达式。

    function vowelsAndConsonants(s) {
        const letters = s.toString().split("");
        console.log(letters);
      
        let vowels = letters.filter((letter) => {
            return /[aeiou]/.test(letter);
        });
      
        console.log(vowels);
        }
      
    vowelsAndConsonants("javascript");

    【讨论】:

      【解决方案4】:

      尊重您的编码逻辑,我只修复了您使用 includes 的问题:)

      const allVowels = ["a", "e", "i", "o", "u"]; // what about "y" ?
      
      function vowelsAndConsonants(s) {
        const letters = s.toString().split("");
        console.log(letters);
      
        let vowels = letters.filter((letter) => {
          return allVowels.includes(letter);
        });
      
        console.log(vowels);
      }
      
      vowelsAndConsonants("javascript");

      【讨论】:

        【解决方案5】:

        您可以将字母缩减为 Map 并将出现的字母存储为 SetArray ([])。

        const VOWELS = new Set('aeiou'.split(''));
        
        const __charType = (ch) =>
          VOWELS.has(ch) ? 'vowels' : 'consonants';
        
        const __resultTemplate = (unique = false) =>
          new Map(Object.entries({
            vowels: unique ? new Set() : [],
            consonants: unique ? new Set() : []
          }));
        
        const vowelsAndConsonants = (str, unique = false) =>
          str.toLowerCase().split('').reduce((acc, ch) =>
            (key =>
              acc.set(key, unique
                ? acc.get(key).add(ch)
                : [...acc.get(key), ch]))
            (__charType(ch)),
            __resultTemplate(unique));
        
        const test1 = vowelsAndConsonants('javascript');
        console.log(`Vowels     : ${[...test1.get('vowels')].join(', ')}`);
        console.log(`Consonants : ${[...test1.get('consonants')].join(', ')}`);
        
        const test2 = vowelsAndConsonants('javascript', true);
        console.log(`Vowels     : ${[...test2.get('vowels')].sort().join(', ')}`);
        console.log(`Consonants : ${[...test2.get('consonants')].sort().join(', ')}`);

        【讨论】:

          猜你喜欢
          • 2015-12-25
          • 2011-03-22
          • 2017-05-11
          • 2017-08-06
          • 2020-11-23
          • 2021-07-05
          • 2020-09-25
          • 1970-01-01
          • 2020-01-29
          相关资源
          最近更新 更多