js로 배열을 분해한 모든 모드를 가져옵니다

5351 단어 JavaScript

하고 싶은 일


간단하고 알기 쉬운 언어로 설명할 수 없기 때문에 완성된 인상을 그려야 한다!
console.log(allSubArray([1,2,3]);
/* 
[
[[1], [2], [3]], 
[[1, 2], [3]],
[[1], [2, 3]],
[[1, 2, 3]]
] 

(順番の入れ替え([[1, 3], [2]]など)は考慮しません)
*/
무엇에 쓰입니까?이렇게 말하지 마십시오.)

생각


컴백해서 쓸 수 있을까요?

const allSubArray(array) => {
     // 再帰終了条件
    if(array.length === 0) return [[]];

    cosnt result = [];
    // array = [1,2,3,4]とする
    /* 最初は0番目の要素[1]とそれ以外[2,3,4]に分割して考える */
    const subArrays = allSubArray([2,3,4]);
    // subArrays = [[[2], [3], [4]], [[2,3],[4]], [[2],[3,4]], [[2,3,4]] ] が期待される

    // [1]とsbuArraysの各要素をくっつけたものをresultにpush
    /* 期待されるresultは
   [
       [[1], [2], [3], [4]],
       [[1], [2,3], [4]],
       [[1], [2], [3,4]],
       [[1], [2,3,4]]
     ]
   */

  /* 次に、1番目までのの要素[1, 2]とそれ以外[3,4]に分割して考える*/
  /* 今感じで行けるか・・・? */

}

해보자.


const allSubArray = (array) => {
    // 再帰終了条件
    if(array.length === 0) return [[]];


    const result = [];
    // array = [1,2,3,4]とする
    /* 最初は0番目の要素[1]とそれ以外[2,3,4]に分割して考える */
    for(let i = 1; i <= array.length; i++) {
      const fixedArray = array.slice(0, i);  //i=1の時:fixedArray = [1], i=2の時:fixedArray =[1,2]
      const otherArray = array.slice(i); //i=1の時:otherArray = [2,3,4]

      // i=1の時:subArrays = [[[2], [3], [4]], [[2,3],[4]], [[2],[3,4]], [[2,3,4]] ] が期待される
      const subArrays = allSubArray(otherArray);
      for(const subArray of subArrays) {
        result.push([fixedArray].concat(subArray));
      }
    }
    return result;
}

실행 결과



다 했어!!(어디에 쓰실까)

좋은 웹페이지 즐겨찾기