Algorithm 9 - [JS] Which are in?

Which are in?

Given two arrays of strings a1 and a2 return a sorted array r in lexicographical order of the strings of a1 which are substrings of strings of a2.

Example 1:

a1 = ["arp", "live", "strong"]

a2 = ["lively", "alive", "harp", "sharp", "armstrong"]

returns ["arp", "live", "strong"]

Example 2:

a1 = ["tarp", "mice", "bull"]

a2 = ["lively", "alive", "harp", "sharp", "armstrong"]

returns []

Notes:

  • Arrays are written in "general" notation. See "Your Test Cases" for examples in your language.
  • In Shell bash a1 and a2 are strings. The return is a string where words are separated by commas.
  • Beware: r must be without duplicates.

📌 Needs ) a2의 하위 Array인 a1 Array의 사전순으로 정렬된 배열 r을 반환

📁 Sol ) array1을 filter로 걸러내고 array2를 돌면서 각 요소중 array1이 속한 문자열이 있으면 바로 true를 return해서 그 요소만 남긴 후 sort로 정렬해서 return

function inArray(array1,array2) {
  return array1.filter(str1 => {
    for(let i = 0; i < array2.length; i++) {
      if(array2[i].includes(str1)) {
        return true;
      }
    }
  }).sort();
}

💡 Other ways to solve ) filter와 if 조건문, for...of문 사용

function inArray(array1,array2) {
  let result = [];
  for (let key of array1) {
    for (let el of array2) {
      if(el.includes(key)) result.push(key)
    }
  }
  result.sort()
  return result.filter((item, index) => result.indexOf(item) === index)
}

좋은 웹페이지 즐겨찾기