lodash - pairs ๐Ÿ”–

Jung Hyun Kimยท2021๋…„ 2์›” 20์ผ
0

lodash

๋ชฉ๋ก ๋ณด๊ธฐ
4/5

lodash

1.pairs

  • ์ด๋ฆ„์ฒ˜๋Ÿผ key,value pair๋กœ ๋œ object๋ฅผ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค. ์ด๋ฒˆ์— ์ปคํ”ผ์Œ๋ฃŒ์™€ ํŒ๋งค๋Ÿ‰์„ object๋กœ ๋ฐ›์•„์™€์„œ ํŒ๋งค๋Ÿ‰๋งŒํผ ์ •๋ ฌํ•ด์•ผํ•  ์ผ์ด ์žˆ์–ด์„œ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
     * _.pairs({ 'barney': 36, 'fred': 40 }); //์ด๋ ‡๊ฒŒ ํ˜ธ์ถœํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด return ํ•œ๋‹ค. 
     * // => [['barney', 36], ['fred', 40]] 
       // ๋ฆฌํ„ด๊ฐ’์€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์ง€๋งŒ ๊ทธํ›„์— sort๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ๊ฐ€๊ณตํ•ด์„œ ์“ฐ๋ฉด ๋œ๋‹ค!

์ „์ฒด์ฝ”๋“œ๐Ÿ’œ

    /**
     * Creates a two dimensional array of an object's key-value pairs,
     * i.e. `[[key1, value1], [key2, value2]]`.
     *
     * @static
     * @memberOf _
     * @category Objects
     * @param {Object} object The object to inspect.
       object๋ฅผ parameter๋กœ ๋ฐ›๊ณ  key-value pair์˜ array๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. 
     * @returns {Array} Returns new array of key-value pairs.

     */
    function pairs(object) {
      var index = -1,
          props = keys(object),
          length = props.length,
          result = Array(length);

      while (++index < length) {
        var key = props[index];
        result[index] = [key, object[key]];
      }
      return result;
    }

์ฝ”๋“œ ๋œฏ์–ด๋ณด๊ธฐ ๐Ÿ’œ

  1. object๋ฅผ parameter ๋กœ ๋ฐ›๋Š”๋‹ค.
    function pairs(object) {
      
      // ์‹œ์ž‘ index๊ฐ’์„ -1๋กœ ์…‹ํŒ…ํ•ด์ค€๋‹ค. (ํ›„์— ++index๋ฅผ ํ†ตํ•ด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒŒ ๋งŒ๋“ค ์˜ˆ์ •)
      var index = -1,
          
       //keys() lodash ํ•จ์ˆ˜๋กœ์„œ Object์˜ key ๊ฐ’๋งŒ ๋ฐฐ์—ด์— ๋‹ด๋Š” ํ•จ์ˆ˜์ด๋‹ค.    
          props = keys(object),
          
       // ๋‹ด๊ธด key๊ฐ’์˜ length์ด๋ฏ€๋กœ pair ๊ฐฏ์ˆ˜ ๋งŒํผ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.    
          length = props.length,
          
       // pair ๊ฐฏ์ˆ˜์˜ ๊ธธ์ด๋งŒํผ์˜ empty array๋ฅผ ๋งŒ๋“ ๋‹ค. 
          result = Array(length);
  1. while๋ฌธ์„ index 0 to ๊ธธ์ด ์ „๊นŒ์ง€ ์ฆ‰ ๋ชจ๋“  pairs๋ฅผ ๋Œ๋•Œ๊นŒ์ง€ ์‹คํ–‰ํ•˜๋ฉด์„œ result index๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•ด์„œ key value ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.
     while (++index < length) {
       
       // key๋Š” ์ฒซ๋ฒˆ์งธ key๊ฐ’์ด๊ณ  
        var key = props[index];
       
       // pair๊ธธ์ด๋งŒํผ์˜ ๋นˆ ๋ฐฐ์—ด์— [key, value]๋„ฃ์–ด์ค€๋‹ค.
        result[index] = [key, object[key]];
      }
      return result;
    }

๋ณดํ†ต push ๋กœ ๋ฐฐ์—ด ๊ฐ’์„ ์ถ”๊ฐ€ ํ•ด์ฃผ๋Š”๊ฑธ๋กœ ์ ์šฉํ–ˆ์—ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ index๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ˆ˜์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•๋„ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค! ๋‹ค์Œ์—” ์ด๋ ‡๊ฒŒ ์ ์šฉํ•ด๋ด์•ผ๊ฒ ๋‹ค ๐Ÿค— ๐Ÿค—

profile
์ฝ”๋ฆฐ์ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๐Ÿ’ป๐Ÿ’›๐Ÿค™๐Ÿผ

0๊ฐœ์˜ ๋Œ“๊ธ€