[TIL] 220119

Lee Syong·2022년 1ė›” 19ėž
0

TIL

ëŠĐ록 ëģīęļ°
154/204
post-thumbnail

📝 ė˜Ī늘 한 ęēƒ

  1. Lodash ęĩŽí˜„

📚 ë°°ėšī ęēƒ

ė–īë Īė› ë˜ ëķ€ëķ„ ė •ëĶŽ

1. Lodash ęĩŽí˜„

1) _.reduce

  1. ėļėˆ˜(accumulator, currentValue)ė™€ í•Ļęŧ˜ iterator í•Ļėˆ˜ëĨž í˜ļėķœí•īė•ž 한ë‹Ī.
  2. ë°°ė—ī(collection)ė˜ 항ëŠĐė„ ė™žėŠ―ė—ė„œ ė˜ĪëĨļėŠ―ėœžëĄœ iteratorė— ė „ë‹Ží•īė•ž 한ë‹Ī.
  3. iterator가 undefinedëĨž 반환하더띾도 iteratorëĨž ęģ„ė† í˜ļėķœí•īė•ž 한ë‹Ī.
  4. accumulator가 ė „닎되ëĐī, ë°°ė—īė˜ ëŠĻ든 항ëŠĐė„ iteratorė— ė „ë‹Ží•īė•ž 한ë‹Ī.
  5. falsy value도 ėœ íšĻ한 acumulator로 받ė•„ė•ž 한ë‹Ī.
  6. accumulator가 ė „닎되ė§€ ė•ŠėœžëĐī, ë°°ė—īė˜ ėēŦ ëēˆė§ļ 항ëŠĐė„ accumulator로 ė„Īė •í•īė•ž 한ë‹Ī.
  7. accumulator가 ė „닎되ė§€ ė•ŠėœžëĐī, ë°°ė—īė˜ 두 ëēˆė§ļ 항ëŠĐė„ iteratorė— ė „ë‹Ží•īė•ž 한ë‹Ī.

â€ŧ ė—Žęļ°ė„œ iterator란 reduce() ëДė„œë“œė—ė„œė˜ ė―œë°ą í•Ļėˆ˜(ëĶŽë“€ė„œ í•Ļėˆ˜)ëĨž 말한ë‹Ī.

_.reduce = function (collection, iterator, accumulator) {
  if (accumulator !== 0 && accumulator === undefined) {
    for (let i = 0; i < collection.length - 1; i++) {
      if (i === 0) {
        accumulator = iterator(collection[0], collection[1]); // 6, 7
        continue;
      }
      accumulator = iterator(accumulator, collection[i + 1]); // 4
    }
  } else {
    for (key in collection) {
      accumulator = iterator(accumulator, collection[key]); // 4
    }
  }
  return accumulator;
};

ėē˜ėŒė— else ėī후ė˜ ëķ€ëķ„도 collection[i]로 ėž‘ė„ąí–ˆë‹Ī가 ėī후 contains í•Ļėˆ˜ė—ė„œ ė—ëŸŽę°€ 떠ė„œ collection[key]로 ėˆ˜ė •í–ˆë‹Ī.

2) _.flatten

  • ë‹Īė°Ļė› ë°°ė—īė„ 1ė°Ļė› ë°°ė—ī로 ëģ€í™˜í•œë‹Ī.
  • 'ėƒˆëĄœėšī ë°°ė—ī'ė€ ë‹Īė°Ļė› ë°°ė—īė˜ ëŠĻ든 ėš”ė†ŒëĨž 폎í•Ļí•īė•ž 한ë‹Ī.
_.flatten = function (nestedArray) {
  let flattenedArray = [];
  for (let i = 0; i < nestedArray.length; i++) {
    if (!Array.isArray(nestedArray[i])) {
      flattenedArray.push(nestedArray[i]);
    } else {
      const innerFlattedArray = _.flatten(nestedArray[i]);
      flattenedArray.push(...innerFlattedArray);
    }
  }
  return flattenedArray;
};

ex) nestedArray [ 1, [2], [3, [[[4]]]] ]

_.flatten([[[4]]])는 [4]ëĨž return 한ë‹Ī.
[3].push(4)ė— ė˜í•ī [3, 4]가 _.faltten([3, [[[4]]]])ė˜ 값ėœžëĄœ return 된ë‹Ī.

ðŸ’Ą console.log로 확ėļí•īëģīęļ°

_.flatten = function (nestedArray) {
  let flattenedArray = [];
  for (let i = 0; i < nestedArray.length; i++) {
    if (!Array.isArray(nestedArray[i])) {
      flattenedArray.push(nestedArray[i]);
    } else {
      const innerFlattedArray = _.flatten(nestedArray[i]);
      console.log(innerFlattedArray, "|", nestedArray[i]);
      console.log("ėīė „ flattenedArray", flattenedArray);
      flattenedArray.push(...innerFlattedArray);
      console.log("ėī후 flattenedArray", flattenedArray);
      console.log("------------");
    }
  }
  return flattenedArray;
};


âœĻ ë‚īėž 할 ęēƒ

  1. 마ëŽīëĶŽ 및 ė‹œėž‘
profile
ëŠĨ동ė ėœžëĄœ ė‚īėž, 행ëģĩ하ęēŒðŸ˜

0개ė˜ 댓ęļ€