lodash
- A modern JavaScript utility library delivering modularity, performance, & extras
https://github.com/lodash/lodash/blob/2.4.2/lodash.js#L3036
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;
}
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);
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๋ฅผ ํตํด ๊ฐ์ ํ๋์ฉ ์์ ํด์ฃผ๋ ๋ฐฉ๋ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค! ๋ค์์ ์ด๋ ๊ฒ ์ ์ฉํด๋ด์ผ๊ฒ ๋ค ๐ค ๐ค