<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>도쿄에서 개발하기</title>
    <link>https://tocomo.tistory.com/</link>
    <description>일본 도쿄에서 개발하며 놀고먹을 생각인 블로그</description>
    <language>ko</language>
    <pubDate>Sat, 22 Aug 2026 06:53:21 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>도꼬</managingEditor>
    <image>
      <title>도쿄에서 개발하기</title>
      <url>https://tistory1.daumcdn.net/tistory/2792313/attach/b071f4fbf4df4e4d8b9c6af9e3e6e673</url>
      <link>https://tocomo.tistory.com</link>
    </image>
    <item>
      <title>React - useEffect의 사용법과 예제</title>
      <link>https://tocomo.tistory.com/32</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;useEffect&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;리액트의 useEffect 훅을 사용하면 함수 컴포넌트에서도 side effect를 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1620124999618&quot; class=&quot;javascript&quot; style=&quot;box-sizing: inherit; overflow: auto; font-family: monospace, monospace; font-size: medium; padding: 20px; background: rgba(0, 0, 0, 0.05); color: rgba(34, 85, 51, 0.87); white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;useEffect(effect, [, deps]);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;파라미터&lt;/p&gt;
&lt;ol data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-ke-size=&quot;size18&quot;&gt;effect함수
&lt;ul data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-size=&quot;size18&quot;&gt;렌더링 이후 실행할 함수(리액트는 이 함수를 기억 했다가 DOM 업데이트 후 불러낸다.)&lt;/li&gt;
&lt;li data-ke-size=&quot;size18&quot;&gt;effect함수에서 함수를 return 할 경우 그 함수가 컴포넌트가 Unmount 될 때 정리의 개념으로 한 번 실행된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;deps
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;특정한 값이 변경될 때 effect함수를 실행 하고 싶을 경우 배열안에 그 값을 넣어준다.
&lt;ul style=&quot;list-style-type: circle;&quot;&gt;
&lt;li&gt;예 ) name변수가 변경 될 때 useEffect(effect, [name])&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;빈 배열을 입력할 경우 컴포넌트가 Mount 될 때에만 실행 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ol data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot; data-ke-size=&quot;size23&quot;&gt;
&lt;ul data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;componentDidMount 혹은 componentDidUpdate와는 달리 useEffect에서 사용되는 effect는 브라우저가 화면을 업데이트하는 것을 차단하지 않습니다. 이를 통해 애플리케이션의 반응성을 향상해줍니다. 대부분의 effect는 동기적으로 실행될 필요가 없습니다. 흔하지는 않지만 (레이아웃의 측정과 같은) 동기적 실행이 필요한 경우에는 useEffect와 동일한 API를 사용하는 useLayoutEffect라는 별도의 Hook이 존재합니다.&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 렌더링 될때마다 실행&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Class Component&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;componentDidMount, componentDidUpdate 이용&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/zealous-sunset-4bz5z?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Function Component(useEffect)&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;useEffect(effect)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/peaceful-star-ulvli?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;&lt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 컴포넌트가 마운트 될 때만 실행&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Class Component&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;componentDidMount이용&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/angry-johnson-ddbmh?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Function Component(useEffect)&lt;/h4&gt;
&lt;p&gt;useEffect(effect, [])&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/boring-dawn-w4s15?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 특정 값이 변경 될 때만 실행&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- Class Component&lt;/h4&gt;
&lt;p&gt;componentDidUpdate 이용&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/sweet-glitter-bxn70?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- Function Component(useEffect)&lt;/h4&gt;
&lt;p&gt;useEffect(effect, [value1, value2, ... ])&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/stoic-murdock-j8w5d?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;lt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 정리(Clean up) 하기&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- Class Component&lt;/h4&gt;
&lt;p&gt;componentWillUnmount 이용&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/bold-perlman-u179f?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- Function Component&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;effect함수에 cleanup 함수를 return&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/festive-voice-y3hbx?fontsize=14&amp;amp;hidenavigation=1&amp;amp;module=%2Fsrc%2FExample.js&amp;amp;theme=dark&amp;amp;view=editor&quot;
             style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;festive-voice-y3hbx&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
        &gt;&lt;/iframe&gt;</description>
      <category>프로그래밍/React</category>
      <category>react componentdidmount useeffect</category>
      <category>react componentdidupdate useeffect</category>
      <category>react hook useeffect</category>
      <category>React JS</category>
      <category>React useEffect</category>
      <category>useeffect cleanup</category>
      <category>useEffect 사용법</category>
      <category>useEffect 예제</category>
      <category>리액트 useEffect</category>
      <category>리액트 훅 useeffect</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/32</guid>
      <comments>https://tocomo.tistory.com/32#entry32comment</comments>
      <pubDate>Tue, 4 May 2021 20:59:36 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript - 배열 splice() 사용법 및 예제</title>
      <link>https://tocomo.tistory.com/31</link>
      <description>&lt;h2 id=&quot;map-함수&quot; data-ke-size=&quot;size26&quot;&gt;구문&lt;/h2&gt;
&lt;p&gt;자바스크립트의 splice 함수는 원본 배열에 새로운 요소를 추가하거나 기존요소를 삭제 또는 교체하여 &lt;b&gt;원본 배열을 변경 하고 제거된 배열을 반환&lt;/b&gt;합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1620119909368&quot; class=&quot;javascript&quot; style=&quot;box-sizing: inherit; overflow: auto; font-family: Menlo, Consolas, Monaco, monospace; font-size: 14px; padding: 15px; background: #f6f7f8; color: #383a42; white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; margin: 20px auto 0px; display: block; border-radius: 3px; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;array.splice(start[, deleteCount[, item1[, item2[, ...]]]])&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파라미터&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;start
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배열의 변경을 시작할 index&lt;/li&gt;
&lt;li&gt;배열의 길이보다 큰 값일 경우 배열의 길이로 설정&lt;/li&gt;
&lt;li&gt;음수인 경우 배열의 끝에서부터 요소를 센다.
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;예 ) array.splice(-n) -&amp;gt; array.length -n과 같다.&lt;/li&gt;
&lt;li&gt;값의 절대값이 배열의 길이보다 큰 경우 0으로 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;deleteCount(Optional)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배열에서 제거할 요소의 수&lt;/li&gt;
&lt;li&gt;생략하거나 값이 array.length - start보다 클 경우 start 부터의 모든 요소를 제거&lt;/li&gt;
&lt;li&gt;0이하의 값을&amp;nbsp; 설정 할 경우 어떤 요소도 제거하지 않음, 이 경우 최소한 하나의 새로운 요소를 추가해야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;item1, item2, ...(Optional)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배열에 추가할 요소&lt;/li&gt;
&lt;li&gt;생략할 경우 요소를 제거하기만 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;반환 값&lt;/h3&gt;
&lt;p&gt;제거한 요소를 담은 배열, 아무것도 제거하지 않을 경우 빈 배열을 반환&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 요소를 제거하지 않고 2번 index에 '딸기', '사과' 추가&lt;/h3&gt;
&lt;pre id=&quot;code_1620121685336&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const fruits = ['수박', '바나나', '망고', '두리안'];

const removed = fruits.splice(2, 0, '딸기', '사과');

console.log(fruits);
// ['수박', '바나나', '딸기', '사과', '망고', '두리안'];

console.log(removed);
// [];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 2번 index에서 1개 요소 제거&lt;/h3&gt;
&lt;pre id=&quot;code_1620121948323&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const fruits = ['수박', '바나나', '망고', '두리안'];

const removed = fruits.splice(2, 1);

console.log(fruits);
// ['수박', '바나나', '두리안'];

console.log(removed);
// ['망고'];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 1번 index에서 2개 요소 제거 후 '멜론' 추가&lt;/h3&gt;
&lt;pre id=&quot;code_1620122090336&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const fruits = ['수박', '바나나', '망고', '두리안'];

const removed = fruits.splice(1, 2, '멜론');

console.log(fruits);
// ['수박', '멜론', '두리안'];

console.log(removed);
// ['바나나', '망고'];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 끝에서 2번째 요소부터 2개의 요소를 제거&lt;/h3&gt;
&lt;pre id=&quot;code_1620122309746&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const fruits = ['수박', '바나나', '망고', '두리안'];

const removed = fruits.splice(-2, 2);

console.log(fruits);
// ['수박', '바나나'];

console.log(removed);
// ['망고', '두리안'];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 1번 index 포함 이후의 모든 요소 제거&lt;/h3&gt;
&lt;pre id=&quot;code_1620122382415&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const fruits = ['수박', '바나나', '망고', '두리안'];

const removed = fruits.splice(1);

console.log(fruits);
// ['수박'];

console.log(removed);
// ['바나나', '망고', '두리안'];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/JavaScript</category>
      <category>javascript splice</category>
      <category>javascript 배열 수정</category>
      <category>javascript 배열 자르기</category>
      <category>Javascript 배열 추가</category>
      <category>자바스크립트 splice</category>
      <category>자바스크립트 배열 splice</category>
      <category>자바스크립트 배열 변경</category>
      <category>자바스크립트 배열 수정</category>
      <category>자바스크립트 배열 자르기</category>
      <category>자바스크립트 배열 추가</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/31</guid>
      <comments>https://tocomo.tistory.com/31#entry31comment</comments>
      <pubDate>Tue, 4 May 2021 19:06:38 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript - 배열 slice() 사용법 및 예제</title>
      <link>https://tocomo.tistory.com/30</link>
      <description>&lt;h2 id=&quot;map-함수&quot; data-ke-size=&quot;size26&quot;&gt;구문&lt;/h2&gt;
&lt;p&gt;자바스크립트의 slice 함수는 &lt;b&gt;원본 배열은 유지&lt;/b&gt;하고 begin부터 end까지(end 미포함)의 &lt;b&gt;새로운 배열 객체를 반환&lt;/b&gt;합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1620056476913&quot; class=&quot;javascript&quot; style=&quot;box-sizing: inherit; overflow: auto; font-family: Menlo, Consolas, Monaco, monospace; font-size: 14px; padding: 15px; background: #f6f7f8; color: #383a42; white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; margin: 20px auto 0px; display: block; border-radius: 3px; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;arr.slice([begin[, end]])&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;parameters&quot; data-ke-size=&quot;size23&quot;&gt;파라미터&lt;/h3&gt;
&lt;ol data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;begin(Optional)&lt;br /&gt;
&lt;ul data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추출 시작할 배열의 index&lt;/li&gt;
&lt;li&gt;음수 index일 경우 배열의 끝에서부터의 길이를 의미
&lt;ul&gt;
&lt;li&gt;예) slice(-2)는 배열의 마지막 2개의 요소를 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;값이 undefined일 경우 index 0과 동일 동작&lt;/li&gt;
&lt;li&gt;배열의 길이보다 큰 index일 경우 빈 배열 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;end(Optional)
&lt;ul data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추출 종료할 배열의 index, &lt;b&gt;end index를 제외 하고 추출&lt;/b&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;예) slice(1, 4)는 두번째 요소부터 네번째 요소까지 (1, 2, 3) 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;음수 index일 경우 배열의 끝에서부터의 길이를 의미
&lt;ul&gt;
&lt;li&gt;예) slice(2, -1)는 세번째 요소부터 끝에서 두번째 요소까지 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;값이 생략 될 경우 배열의 끝(array.length)까지 추출&lt;/li&gt;
&lt;li&gt;배열의 길이보다 큰 index일 경우도 마찬가지로 배열의 끝(array.length)까지 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;반환_값&quot; data-ke-size=&quot;size23&quot;&gt;반환 값&lt;/h3&gt;
&lt;p&gt;추출한 요소를 포함한 새로운 배열.&lt;/p&gt;
&lt;h2 id=&quot;examples&quot; data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. 배열의 일부를 반환하는 새로운 배열&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1620056476919&quot; class=&quot;javascript&quot; style=&quot;box-sizing: inherit; overflow: auto; font-family: Menlo, Consolas, Monaco, monospace; font-size: 14px; padding: 15px; background: #f6f7f8; color: #383a42; white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; margin: 20px auto 0px; display: block; border-radius: 3px; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1, 2, 3, 4, 5];
// 양수 index    0, 1, 2, 3, 4
// 음수 index   -5,-4,-3,-2,-1

console.log(numbers.slice()); // index 0부터 추출(0, undefined, null 동일 동작)
// expected : [1, 2, 3, 4, 5];

console.log(numbers.slice(1)); // index 1부터 추출
// expected : [2, 3, 4, 5];

console.log(numbers.slice(-2)); // 마지막요소부터 마지막에서 두번째 요소까지 추출
// expected : [4, 5];

console.log(numbers.slice(99)); // 배열의 길이보다 클 경우 빈 배열
// expected : [];


console.log(numbers.slice(1, 4)); // index 1부터 index 4까지(index 4제외) 추출
// expected : [2, 3, 4];

console.log(numbers.slice(2, -1)); // index 2부터 마지막에서 첫번째 요소까지(마지막에서 첫번째 요소 제외) 추출
// expected : [3, 4];

console.log(numbers.slice(2, 99)); // index 2부터 마지막에서 요소까지 추출(end가 배열의 길이보다 큼)
// expected : [3, 4, 5];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;음수 index와 end의 개념이 조금 헷갈리기 쉬우니 주의 해야합니다.&lt;/p&gt;</description>
      <category>프로그래밍/JavaScript</category>
      <category>JavaScript</category>
      <category>javascript array slice</category>
      <category>javascript slice</category>
      <category>javascript splice</category>
      <category>javascript 배열 자르기</category>
      <category>javascript 배열 추출</category>
      <category>자바스크립트</category>
      <category>자바스크립트 slice</category>
      <category>자바스크립트 배열 slice</category>
      <category>자바스크립트 배열 자르기</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/30</guid>
      <comments>https://tocomo.tistory.com/30#entry30comment</comments>
      <pubDate>Tue, 4 May 2021 01:37:50 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript - 배열 find() 사용법 및 예제</title>
      <link>https://tocomo.tistory.com/29</link>
      <description>&lt;h2 id=&quot;map-함수&quot; data-ke-size=&quot;size26&quot;&gt;구문&lt;/h2&gt;
&lt;p&gt;자바스크립트의 find 함수는 callback함수의 &lt;b&gt;조건에 만족하는 첫번째 요소의 값을 반환&lt;/b&gt;합니다.&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619965822333&quot; class=&quot;javascript&quot; style=&quot;box-sizing: inherit; overflow: auto; font-family: Menlo, Consolas, Monaco, monospace; font-size: 14px; padding: 15px; background: #f6f7f8; color: #383a42; white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; margin: 20px auto 0px; display: block; border-radius: 3px; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;arr.find(callback(element[, index[, array]])[, thisArg])&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;parameters&quot; data-ke-size=&quot;size23&quot;&gt;파라미터&lt;/h3&gt;
&lt;ol data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;callback function&lt;br /&gt;
&lt;ul data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 요소의 조건을 판단할 함수&lt;/li&gt;
&lt;li&gt;다음 3가지의 인수를 가집니다.
&lt;ol data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;element&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;- 배열의 현재 요소&lt;/li&gt;
&lt;li&gt;&lt;b&gt;index&lt;/b&gt;(Optional) - 배열의 현재 요소의 인덱스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;array&lt;/b&gt;(Optional) - 호출한 배열&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;thisArg(Optional)
&lt;ul data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;callback함수를 실행할때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;this&lt;/b&gt;로 사용되는 값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;반환_값&quot; data-ke-size=&quot;size23&quot;&gt;반환 값&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;배열 &lt;span style=&quot;color: #333333;&quot;&gt;요소를 순회하며 callback 함수을 실행하고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;결과가 true(조건에 만족)할 경우 &lt;b&gt;요소의 값을 즉시 반환하고 순회를 멈춥니다.&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;만족하는 요소가 하나도&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;존재하지 않을 경우 undefined를 반환&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;합니다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;examples&quot; data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. 오브젝트 배열 속 조건에 맞는 오브젝트 찾기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619965822337&quot; class=&quot;javascript&quot; style=&quot;box-sizing: inherit; overflow: auto; font-family: Menlo, Consolas, Monaco, monospace; font-size: 14px; padding: 15px; background: #f6f7f8; color: #383a42; white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; margin: 20px auto 0px; display: block; border-radius: 3px; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 실제직업과 다릅니다.
const friends = [
  {
    name: '양주진',
    age: 32,
    job: '코인러',
    married: false,
  },
  {
    name: '오영제',
    age: 32,
    job: '랩퍼',
    married: false,
  },
  {
    name: '서준형',
    age: 32,
    job: '2년차 유부남',
    married: true,
  }
];

// 유부남 찾기
const findedSadGuy = friends.find((friend) =&amp;gt; {
  return friend.married === true;
})

console.log('슬픈남자 ', findedSadGuy);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name: '서준형',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;age: 32,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job: '2년차 유부남',&lt;br /&gt;&amp;nbsp; &amp;nbsp; married: true&lt;br /&gt;&amp;nbsp;&amp;nbsp;};&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/JavaScript</category>
      <category>Array find</category>
      <category>JavaScript</category>
      <category>javascript array find</category>
      <category>Javascript find</category>
      <category>배열 검색</category>
      <category>자바스크립트</category>
      <category>자바스크립트 find</category>
      <category>자바스크립트 배열 find</category>
      <category>자바스크립트 배열 검색</category>
      <category>자바스크립트 배열 찾기</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/29</guid>
      <comments>https://tocomo.tistory.com/29#entry29comment</comments>
      <pubDate>Sun, 2 May 2021 23:51:07 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript - 비구조화 할당/구조분해 할당</title>
      <link>https://tocomo.tistory.com/28</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;비구조화 할당/ 구조분해 할당이란?&lt;/h2&gt;
&lt;p&gt;배열이나 객체의 속성을 바로 개별 변수에 할당하는 JavaScript의 표현식입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;구문&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.&amp;nbsp; 배열&lt;/h3&gt;
&lt;pre id=&quot;code_1619793888127&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const [a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.&amp;nbsp; 오브젝트&lt;/h3&gt;
&lt;pre id=&quot;code_1619794160954&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const { a, b } = { a: 10, b: 20 };
console.log(a); // 10
console.log(b); // 20&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 배열 / 오브젝트의 나머지 값 할당&lt;/h3&gt;
&lt;pre id=&quot;code_1619794124519&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cosnt arr = [10, 20, 30, 40, 50];
const [a, b, ...rest] = arr;
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

const obj = { a: 10, b: 20, c: 30, d: 40, e: 50 };
const { a, b, ...rest } = obj 
console.log(a); // 10
console.log(b); // 20
console.log(rest); // { c: 30, d: 40, e: 50 }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 배열의 일부 값 무시하여 할당&lt;/h3&gt;
&lt;pre id=&quot;code_1619795533409&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const arr = [10, 20, 30, 40, 50];

const [start, , , , end] = arr;

console.log(start); // 10
console.log(end);   // 50&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 오브젝트 새로운 변수이름으로 할당&lt;/h3&gt;
&lt;pre id=&quot;code_1619795630398&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const obj = { a: 3, b: 5 };
const { a: aa = 10, b: bb = 5 } = obj;

console.log(aa); // 3
console.log(bb); // 5&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/JavaScript</category>
      <category>JavaScript</category>
      <category>JavaScript 구조분해 할당</category>
      <category>Javascript 배열 할당</category>
      <category>JavaScript 비구조화 할당</category>
      <category>배열 할당</category>
      <category>오브젝트 할당</category>
      <category>자바스크립트</category>
      <category>자바스크립트 구조분해 할당</category>
      <category>자바스크립트 비구조화 할당</category>
      <category>자바스크립트 오브젝트 할당</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/28</guid>
      <comments>https://tocomo.tistory.com/28#entry28comment</comments>
      <pubDate>Sat, 1 May 2021 00:16:10 +0900</pubDate>
    </item>
    <item>
      <title>React - useState hook의 사용법과 예제</title>
      <link>https://tocomo.tistory.com/27</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Hook이란&lt;/h2&gt;
&lt;p&gt;기존의 React에서는 클래스 컴포넌트를 작성해야만 상태(state) 값 관리 및 여러 React의 기능등을 사용할 수 있었지만 , React 16.8버전부터 추가된 Hook을 이용하면 함수 컴포넌트에서도 상태관리등이 사용가능 하도록 되었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다고 해서 클래스 컴포넌트가 필요 없는 것은 아니며, 상황에 따라 적절히 맞춰 사용 가능합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;useState Hook&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;기본적으로 배열 &lt;a href=&quot;https://tocomo.tistory.com/28&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;비구조화 할당문법&lt;/a&gt;으로 많이 사용 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619790189481&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[state, setState] = useState(initialState);&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;파라미터&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-ke-size=&quot;size18&quot;&gt;initialState
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-size=&quot;size18&quot;&gt;state의 초기값 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;반환값&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-ke-size=&quot;size23&quot;&gt;array (pair of values)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-size=&quot;size23&quot;&gt;이 배열은 아래와 같은 2개의 값을 가지고 있습니다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-ke-size=&quot;size23&quot;&gt;현재의 상태 값(state)&lt;/li&gt;
&lt;li data-ke-size=&quot;size23&quot;&gt;상태값을 변경하는 함수(setState)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 단일 상태값 관리하기&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Class Component&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/cocky-sid-rpruv?fontsize=14&amp;hidenavigation=1&amp;module=%2Fsrc%2FExample.js&amp;theme=dark&amp;view=editor&quot;
     style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;cocky-sid-rpruv&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
   &gt;&lt;/iframe&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Function Component(useState)&lt;/h4&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/boring-wozniak-2ym17?fontsize=14&amp;hidenavigation=1&amp;module=%2Fsrc%2FExample.js&amp;theme=dark&amp;view=editor&quot;
     style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;boring-wozniak-2ym17&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
   &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 여러개의 상태값 관리하기&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Class Component&lt;/h4&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/vigorous-sky-70gjz?fontsize=14&amp;hidenavigation=1&amp;module=%2Fsrc%2FExample.js&amp;theme=dark&amp;view=editor&quot;
     style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;vigorous-sky-70gjz&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
   &gt;&lt;/iframe&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;- Function Component(useState)&lt;/h4&gt;
&lt;iframe src=&quot;https://codesandbox.io/embed/awesome-fog-2k6kq?fontsize=14&amp;hidenavigation=1&amp;module=%2Fsrc%2FExample.js&amp;theme=dark&amp;view=editor&quot;
     style=&quot;width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;&quot;
     title=&quot;awesome-fog-2k6kq&quot;
     allow=&quot;accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking&quot;
     sandbox=&quot;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&quot;
   &gt;&lt;/iframe&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또는 클래스 컴포넌트의 this.setState처럼 하나의 state를 오브젝트로 하여 여러 상태를 관리하는 방법도 있지만this.setState처럼 state를 병합하는 것이 아닌 대체하는 것임에 주의 하여야 합니다.&lt;/p&gt;</description>
      <category>프로그래밍/React</category>
      <category>REACT</category>
      <category>React hook</category>
      <category>React JS</category>
      <category>React state 변경</category>
      <category>react useState</category>
      <category>React 상태관리</category>
      <category>리액트</category>
      <category>리액트 state</category>
      <category>리액트 상태관리</category>
      <category>리액트 훅</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/27</guid>
      <comments>https://tocomo.tistory.com/27#entry27comment</comments>
      <pubDate>Fri, 30 Apr 2021 23:34:56 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript - 배열 reduce() 사용법 및 예제</title>
      <link>https://tocomo.tistory.com/26</link>
      <description>&lt;h2 id=&quot;map-함수&quot; data-ke-size=&quot;size26&quot;&gt;구문&lt;/h2&gt;
&lt;p&gt;자바스크립트의 reduce함수는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;배열의 각 요소를 순회하며 callback함수의 실행 값을 누적하여 하나의 결과값을 반환 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619706409270&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;arr.reduce(callback[, initialValue])&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;parameters&quot; data-ke-size=&quot;size23&quot;&gt;파라미터&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;callback function&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음 4가지의 인수를 가집니다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;accumulator&amp;nbsp;&lt;/b&gt;- accumulator는 callback함수의 반환값을 누적합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;currentValue &lt;/b&gt;- 배열의 현재 요소&lt;/li&gt;
&lt;li&gt;&lt;b&gt;index&lt;/b&gt;(Optional) - 배열의 현재 요소의 인덱스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;array&lt;/b&gt;(Optional) - 호출한 배열&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;callback함수의 반환 값은 accumulator에 할당되고 순회중 계속 누적되어 최종적으로 하나의 값을 반환합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;initialValue(Optional)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최초 callback함수 실행 시 accumulator 인수에 제공되는 값, &lt;b&gt;초기값을 제공하지 않을경우 배열의 첫 번째 요소를 사용하고, 빈 배열에서 초기값이 없을 경우 에러가 발생합니다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;반환_값&quot; data-ke-size=&quot;size23&quot;&gt;반환 값&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;배열을 순서대로 불러&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;각 요소에 대해 callback 함수을 실행한 결과를 누적한 값&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;examples&quot; data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 배열의 모든 값 (1부터 10까지) 더하기&lt;/p&gt;
&lt;pre id=&quot;code_1619706409272&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const sum1 = numbers.reduce((accumulator, currentNumber) =&amp;gt; accumulator + currentNumber);

console.log('sum1 =', sum1);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또는&lt;/p&gt;
&lt;pre id=&quot;code_1619706409272&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// callback함수 선언 후 이용
function sumReducer(accumulator, currentNumber) {
  return accumulator + currentNumber;
}

const sum2 = numbers.reduce(sumReducer);

console.log('sum2 =', sum2);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;sum1 = 55&lt;br /&gt;sum2 = 55&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. 오브젝트 배열에서 원하는 항목의 값만 더하기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619706409273&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 실제직업과 다릅니다.
const friends = [
  {
    name: '양주진',
    age: 32,
    job: '코인러',
    married: false,
  },
  {
    name: '오영제',
    age: 32,
    job: '랩퍼',
    married: false,
  },
  {
    name: '서준형',
    age: 32,
    job: '2년차 유부남',
    married: true,
  }
];

// 3명의 나이를 더해봅니다.
// 여기서 초기값 설정이 반드시 필요합니다.
const ageSum = friends.reduce((accumulator, currentObject) =&amp;gt; {
  return accumulator + currentObject.age;
}, 0);

console.log('친구들 나이 합 ', ageSum);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;96&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작동 방식&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;예제2에서 initialValue를 반드시 넣어 줘야 하는 이유는 reduce의 작동 방식과 관련이 있습니다. (중요!)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;b&gt;initialValue를 설정했느냐 안했느냐에 따라 &lt;/b&gt;콜백의 최초 호출 시의 accumulator와 currentValue가 달라집니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- &lt;b&gt;initialValue를 설정 한 경우&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 40px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;callback&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;accumulator&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;currentValue&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;currentIndex&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;1번째 호출&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;initialValue&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;배열의 첫번째 요소&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 20px;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;b&gt;&lt;b&gt;initialValue를 설정하지 않은 경우&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 40px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;callback&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;accumulator&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;currentValue&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;currentIndex&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;1번째 호출&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;배열의 첫번째 요소&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;배열의 두번째 요소&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;pre id=&quot;code_1619710792893&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const number = [1, 2, 3, 4, 5];

function reducer(accumulator, currentValue, currentIndex) {
  const result = accumulator + currentValue;
  console.log('accumulator = ', accumulator, ', currentValue = ', currentValue, ', currentIndex = ', currentIndex, ', result = ', result);
  return result;
}

// initialValue가 없을 경우
number.reduce(reducer);

// 동작
// accumulator = 1, currentValue = 2, currentIndex = 1, result = 3
// accumulator = 3, currentValue = 3, currentIndex = 2, result = 6
// accumulator = 6, currentValue = 4, currentIndex = 3, result = 10
// accumulator = 10, currentValue = 5, currentIndex = 4, result = 15

// initialValue가 있을 경우
number.reduce(reducer, 0);

// 동작
// accumulator = 0, currentValue = 1, currentIndex = 0, result = 1
// accumulator = 1, currentValue = 2, currentIndex = 1, result = 3
// accumulator = 3, currentValue = 3, currentIndex = 2, result = 6
// accumulator = 6, currentValue = 4, currentIndex = 3, result = 10
// accumulator = 10, currentValue = 5, currentIndex = 4, result = 15&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;initialValue가 없으면 배열의 2번째부터 계산이 시작되는데 &lt;span style=&quot;color: #333333;&quot;&gt;배열이 비어있으면 당연히&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/TypeError&quot;&gt;TypeError&lt;/a&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;가 발생&lt;/b&gt;합니다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;배열의 요소가 하나 뿐이면서 initialValue가 없는 경우, &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;또는 initialValue는 주어졌으나 배열이 비어 있는 경우엔 계산할 필요가 없기 때문에 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그 값을 &lt;b&gt;callback&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;호출 없이 그대로 반환&lt;/b&gt;합니다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위 작동방식을 근거로&lt;/p&gt;
&lt;p&gt;&lt;b&gt;예제2번의 경우 initialValue가 없을 경우 첫 번째 콜백에서 TypeError가 발생하게됩니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619711355157&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const friends = [
  {
    name: '양주진',
    age: 32,
    job: '코인러',
    married: false,
  },
  {
    name: '오영제',
    age: 32,
    job: '랩퍼',
    married: false,
  },
  {
    name: '서준형',
    age: 32,
    job: '2년차 유부남',
    married: true,
  }
];

// initialValue 설정X
const ageSum = friends.reduce((accumulator, currentObject) =&amp;gt; {
  return accumulator + currentObject.age;
});

// 첫번째 콜백 실행
// accumulator = { name: '양주진', age: 32, job: '코인러', married: false }
// currentObject = { name: '오영제', age: 32, job: '랩퍼', married: false }
// currentObject.age = 32
// accumulator + currentObject.age = TypeError
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/JavaScript</category>
      <category>JavaScript</category>
      <category>javascript 1부터 100까지</category>
      <category>Javascript reduce</category>
      <category>javascript 배열 합</category>
      <category>reduce 함수</category>
      <category>자바스크립트</category>
      <category>자바스크립트 1부터 10까지 더하기</category>
      <category>자바스크립트 reduce</category>
      <category>자바스크립트 배열 숫자 더하기</category>
      <category>자바스크립트 배열 합</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/26</guid>
      <comments>https://tocomo.tistory.com/26#entry26comment</comments>
      <pubDate>Fri, 30 Apr 2021 00:53:30 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript - 배열 filter() 사용법 및 예제</title>
      <link>https://tocomo.tistory.com/25</link>
      <description>&lt;h2 id=&quot;map-함수&quot; data-ke-size=&quot;size26&quot;&gt;구문&lt;/h2&gt;
&lt;p&gt;자바스크립트의 filter함수는 &lt;span&gt;배열의 각 요소를 순회하며 callback함수를 실행하며 조건에 맞는 요소만을 갖는 배열을 반환합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619623724592&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;arr.filter(callback(element[, index[, array]])[, thisArg])&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;parameters&quot; data-ke-size=&quot;size23&quot;&gt;파라미터&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;callback function&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 요소의 조건을 판단할 함수로 true를 반환하면 요소를 유지하고 false를 반환하면 제외합니다.&lt;/li&gt;
&lt;li&gt;다음 3가지의 인수를 가집니다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;element &lt;/b&gt;- 배열의 현재 요소&lt;/li&gt;
&lt;li&gt;&lt;b&gt;index&lt;/b&gt;(Optional) - 배열의 현재 요소의 인덱스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;array&lt;/b&gt;(Optional) - 호출한 배열&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;thisArg(Optional)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;callback함수를 실행할때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;this&lt;/b&gt;로 사용되는 값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;반환_값&quot; data-ke-size=&quot;size23&quot;&gt;반환 값&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;배열을 순서대로 불러 &lt;span style=&quot;color: #333333;&quot;&gt;각 요소에 대해 callback 함수을 실행하고 &lt;/span&gt;&lt;/span&gt;결과가 true인 요소들만으로 이루어진 새로운 배열을 반환합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;examples&quot; data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 배열 속 숫자 중 홀수만 갖는 배열 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1619623724593&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1, 2, 3, 4, 5]; // 기존 배열

// filter1 - callback함수를 직접 작성
// 현재 요소를 2로 나눈 나머지가 1일 경우 홀수
const filter1 = numbers.filter(currentNumber =&amp;gt; currentNumber % 2 === 1);

console.log('filter1 =', filter1);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또는&lt;/p&gt;
&lt;pre id=&quot;code_1619623724593&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// filter2 - callback함수 선언 후 이용
function isOdd(currentNumber) {
  return currentNumber % 2 === 1;
}

const filter2 = numbers.filter(isOdd);

console.log('filter2 =', filter2);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;filter1= [1, 3, 5]&lt;br /&gt;filter2= [1, 3, 5]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. 오브젝트 배열 속 원하는 요소만 갖는 배열 만들기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619623724594&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 실제직업과 다릅니다.
const friends = [
  {
    name: '양주진',
    age: 32,
    job: '코인러',
    married: false,
  },
  {
    name: '오영제',
    age: 32,
    job: '랩퍼',
    married: false,
  },
  {
    name: '서준형',
    age: 32,
    job: '2년차 유부남',
    married: true,
  }
];

// 자유인들만 뽑아봅시다.
const happyPeople = friends.filter((friend) =&amp;gt; {
  
  return friend.married === false;
})

console.log('현재 행복한 친구들.. ', happyPeople);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;[&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;'양주진',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;age: 32,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job: '코인러',&lt;br /&gt;&amp;nbsp; &amp;nbsp; married: false&lt;br /&gt;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;'오영제',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;age: 32,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job: '랩퍼',&lt;br /&gt;&amp;nbsp; &amp;nbsp; married: false&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;];&lt;/blockquote&gt;</description>
      <category>프로그래밍/JavaScript</category>
      <category>Javascript array filter</category>
      <category>Javascript filter</category>
      <category>javascript filter 함수</category>
      <category>배열 필터링</category>
      <category>자바스크립트 filter</category>
      <category>자바스크립트 배열 filter</category>
      <category>자바스크립트 배열 필터</category>
      <category>자바스크립트 원하는 값만</category>
      <category>자바스크립트 필터</category>
      <category>자바스크립트 홀수 짝수</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/25</guid>
      <comments>https://tocomo.tistory.com/25#entry25comment</comments>
      <pubDate>Thu, 29 Apr 2021 00:50:59 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript - 배열 map() 사용법 및 예제</title>
      <link>https://tocomo.tistory.com/24</link>
      <description>&lt;h2 id=&quot;map-함수&quot; data-ke-size=&quot;size26&quot;&gt;구문&lt;/h2&gt;
&lt;p&gt;자바스크립트의 map함수는 callback함수 실행한 결과 반환값으로 배열의 길이, 순서를 유지한 새로운 배열을 만듭니다.&lt;/p&gt;
&lt;pre id=&quot;code_1619490232487&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;arr.map(callback(currentValue[, index[, array]])[, thisArg])&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;parameters&quot; data-ke-size=&quot;size23&quot;&gt;파라미터&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;callback function&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;callback함수는 다음 3가지의 인수를 가집니다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;currentValue&amp;nbsp;&lt;/b&gt;- 배열의 현재 요소&lt;/li&gt;
&lt;li&gt;&lt;b&gt;index&lt;/b&gt;(Optional) - 배열의 현재 요소의 인덱스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;array&lt;/b&gt;(Optional) - 호출한 배열&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;thisArg(Optional)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;callback함수를 실행할때 &lt;b&gt;this&lt;/b&gt;로 사용되는 값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;반환_값&quot; data-ke-size=&quot;size23&quot;&gt;반환 값&lt;/h3&gt;
&lt;p&gt;배열을 순서대로 불러 각 요소에 대해 callback 함수을 실행한 결과로 새로운 배열을 만듭니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;examples&quot; data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 배열 속 숫자의 제곱을 구한 새로운 숫자배열 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1619491225291&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1, 2, 3, 4, 5]; // 기존 배열

// map1 - callback함수를 직접 작성
const map1 = numbers.map(currentNumber =&amp;gt; currentNumber * currentNumber);

console.log('map1 =', map1);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또는&lt;/p&gt;
&lt;pre id=&quot;code_1619496817481&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// map2 - callback함수 선언 후 이용
function calcDouble(currentNumber) {
  // Math.pow(x, y) - x의 y 제곱을 반환합니다.
  return Math.pow(currentNumber, 2);
}

const map2 = numbers.map(calcDouble);

console.log('map2 =', map2);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;map1 = [1, 4, 9, 16, 25]&lt;br /&gt;map2 = [1, 4, 9, 16, 25]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 숫자배열로 숫자값과 인덱스를 갖는 오브젝트 배열 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;가끔 기존의 배열이 숫자배열이라고해서 만들수 있는 배열도 무조건 똑같은 타입의 숫자배열이라고 오해하는 상황이 생기는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;기존 배열의 값과 길이만 이용할 뿐 &lt;b&gt;새로운 타입의 배열을 만드는 것도 가능&lt;/b&gt;합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1619492716024&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1, 3, 5, 7, 9];

const objectArr = numbers.map((number, index) =&amp;gt; ({ number, index }));

console.log('objectArr =', objectArr);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-size=&quot;size18&quot; data-ke-style=&quot;style2&quot;&gt;objectArr&amp;nbsp;=&amp;nbsp;[ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;number&quot;:&amp;nbsp;1, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;index&quot;:&amp;nbsp;0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;number&quot;:&amp;nbsp;3, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;index&quot;:&amp;nbsp;1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;number&quot;:&amp;nbsp;5, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;index&quot;:&amp;nbsp;2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;number&quot;:&amp;nbsp;7, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;index&quot;:&amp;nbsp;3 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;number&quot;:&amp;nbsp;9, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;index&quot;:&amp;nbsp;4 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. 오브젝트 배열을 이용하여 새로운 오브젝트 배열 만들기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;map 함수는 기존의 배열을 수정하는 것이 아닌 새로운 배열을 만들기 때문에 상황에 따라 기존 배열을 유지하고 새로운 배열을 만드는 데 쓰기 적합합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1619495022873&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 실제직업과 다릅니다.
const friends = [
  {
    name: '양주진',
    age: 32,
    job: '코인러'
  },
  {
    name: '오영제',
    age: 32,
    job: '랩퍼'
  },
  {
    name: '서준형',
    age: 32,
    job: '2년차 유부남'
  }
];

// 10년 후의 모습을 예상합니다.
const tenYearsLaterFriends = friends.map((friend) =&amp;gt; {
  // 나이는 10살씩 더 먹겠네요
  const returnObj = friend;
  returnObj.age += 10;
  
  // 새로운 직업을 갖고 있을 듯 합니다.
  let newJob;
  switch(returnObj.job) {
    case '코인러':
      newJob = '한강뷰 또는 한강속';
      break;
    case '2년차 유부남':
      newJob = '12년차 유부남';
      break;
    default:
      newJob = '무직';
      break;
  }
  
  returnObj.job = newJob;
  
  return returnObj;
})

console.log('10년 후 친구들.. ', tenYearsLaterFriends);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;[ &lt;br /&gt;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;'양주진', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;age: 42, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job: '한강뷰 또는 한강속' &lt;br /&gt;&amp;nbsp;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;'오영제', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;age: 42, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job: '무직' &lt;br /&gt;&amp;nbsp;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;'서준형', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;age: 42, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job: '12년차 유부남' &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;];&lt;/blockquote&gt;</description>
      <category>프로그래밍/JavaScript</category>
      <category>array map</category>
      <category>JavaScript</category>
      <category>javascript map</category>
      <category>javascript map 함수</category>
      <category>javascript 맵 함수</category>
      <category>Javascript 배열</category>
      <category>map 함수</category>
      <category>자바스크립트</category>
      <category>자바스크립트 배열</category>
      <category>자바스트립트 map</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/24</guid>
      <comments>https://tocomo.tistory.com/24#entry24comment</comments>
      <pubDate>Tue, 27 Apr 2021 12:49:41 +0900</pubDate>
    </item>
    <item>
      <title>Laravel - Ubuntu 라라벨 설치</title>
      <link>https://tocomo.tistory.com/23</link>
      <description>&lt;p&gt;#!/usr/bin/env bash&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 패키지 목록 업데이트&lt;/p&gt;&lt;p&gt;sudo apt-get update&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 시스템 패키지 업데이트&lt;/p&gt;&lt;p&gt;sudo apt-get -y upgrade&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## PHP7 설치&lt;/p&gt;&lt;p&gt;sudo apt-get install -y php7.0-cli php7.0-sqlite3 php7.0-curl php7.0-mcrypt php7.0-mysql php7.0-readline php7.0-mbstring php7.0-xml php7.0-zip php7.0-intl&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## PHP7 fpm 설치&lt;/p&gt;&lt;p&gt;sudo apt-get install php7.0-fpm&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## MySQL 5.7 설치&lt;/p&gt;&lt;p&gt;sudo apt-get install -y mysql-server-5.7 mysql-client-core-5.7&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;## nginx, redis&lt;/p&gt;&lt;p&gt;sudo apt-get install -y nginx redis-server redis-tools&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## composer 전역 설치&lt;/p&gt;&lt;p&gt;curl -O -sS https://getcomposer.org/installer&lt;/p&gt;&lt;p&gt;sudo php installer --install-dir=/usr/local/bin&lt;/p&gt;&lt;p&gt;sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## laravel설치&lt;/p&gt;&lt;p&gt;composer create-project --prefer-dist laravel/laravel Laravel&amp;nbsp;&quot;5.3.*&quot;&lt;/p&gt;</description>
      <category>프로그래밍/Laravel5</category>
      <author>도꼬</author>
      <guid isPermaLink="true">https://tocomo.tistory.com/23</guid>
      <comments>https://tocomo.tistory.com/23#entry23comment</comments>
      <pubDate>Wed, 13 Sep 2017 00:37:54 +0900</pubDate>
    </item>
  </channel>
</rss>