>source

나는 이것 가지다 input 다음과 같이 배열.

const input = [
  '_rels', 'item1.xml',
  'item2.xml', 'item3.xml',
  'item4.xml', 'item5.xml',
  'item6.xml', 'item7.xml',
  'itemProps1.xml', 'itemProps2.xml',
  'itemProps3.xml', 'itemProps4.xml',
  'itemProps5.xml', 'itemProps6.xml',
  'itemProps7.xml'
]

배열은 모든 문자열을 포함 할 수 있습니다.

배열을 필터링하고 싶습니다. item{number}.xml , 제외 itemProps{number}.xml .

예상 결과는 다음과 같습니다.

const output = [
'item1.xml', 'item2.xml', 'item3.xml', 'item4.xml', 'item5.xml', 'item6.xml', 'item7.xml'
]

  • 답변 # 1

    당신이 사용할 수있는 RegExp.prototype.test()Array.prototype.filter 결과를 얻는 방법.

    const input = [
      '_rels', 'item1.xml',
      'item2.xml', 'item3.xml',
      'item4.xml', 'item5.xml',
      'item6.xml', 'item7.xml',
      'itemProps1.xml', 'itemProps2.xml',
      'itemProps3.xml', 'itemProps4.xml',
      'itemProps5.xml', 'itemProps6.xml',
      'itemProps7.xml'
    ];
    const res = input.filter(item => /^item\d+\.xml$/i.test(item));
    console.log(res);
    
    

  • 답변 # 2

    정규식 결합을 활용할 수 있습니다. Array.prototype.reduce 이와 같은 방법

    const input = [
      '_rels', 'item1.xml',
      'item2.xml', 'item3.xml',
      'item4.xml', 'item5.xml',
      'item6.xml', 'item7.xml',
      'itemProps1.xml', 'itemProps2.xml',
      'itemProps3.xml', 'itemProps4.xml',
      'itemProps5.xml', 'itemProps6.xml',
      'itemProps7.xml'
    ]
    const regExPattern = /itemProps\d+\.xml/
    const result = input.reduce((acc, current) => {
      if(regExPattern.test(current) === false){
        return acc.concat(current);
      }
      return acc;
    }, []);
    console.log(result);
    
    

관련 자료

  • 이전 javascript - vue - vuex getter와 함께 per-route guard를 사용하는 방법은 무엇입니까?
  • 다음 javascript - codingame - 어린이 놀이