0

私はいくつかの要素の組み合わせが配列に存在するかどうかを確認したいいくつかの要素を含む配列を持っています。その配列には、ターゲット要素がcheckingSetの要素が続いています。たとえば、inputArray が ['a', 'b', 'c', 'd'] で、検索する組み合わせが ['a', 'd'] の場合、inputArray には両方が正しい順序で含まれているため、true を返す必要があります。 . inputArray が ['d', 'b', 'c', 'd', 'a'] で、組み合わせが ['a', 'd'] の場合、inputArray には両方の要素が含まれているが、順番を間違えたり

isExist(['a', 'd']) => true 
isExist(['a', 'a', 'd']) => true
isExist(['e', 'd']) => false

Set と while ループを使用できますが、よりエレガントまたはモダンな方法があるかどうか疑問に思っていますか?

export function isExist(checkArray): boolean {
  let hasA = false;
  let hasB = false;
  checkingSet = new Set(['b', 'c', 'd'])
  const target = 'a'
  inputArray = [...checkArray]
  while (inputArray && !!inputArray.length) {
    const lastOne = inputArray.pop();
    if (!hasA && !!lastOne) {
      hasA = chekcingSet.has(lastOne);
    }
    if (!hasB && !!lastOne) {
      hasB = lastOne === target;
    }
    if (hasA && hasB) {
      return true;
    }
  }
  return false;
}

4

2 に答える 2