728x90
반응형

새 창을 열고 닫힐 때 특정 기능을 실행하는 방법 ?

웹 사이트를 개발하다 보면, 사용자의 편의성을 높이기 위해 새창을 열고, 해당창이 닫힐 때 특정 동작을 수행하고 싶을 때가 있습니다. 이번 포스팅에서는 이러한 상황을 'React'를 활용해 어떻게 구현할 수 있는지 알아보도록 하겠습니다.

 

먼저 기본이 되는 몇 가지 JavaScript 메소드에 대해 알아보겠습니다:

 

  • window.open() : 새 창을 여는 메소드로, 이를 통해 반환받은 창 객체 참조를 저장할 수 있습니다.
  • setInterval() : 주기적으로 코드를 실행하게 해주는 타이머 함수입니다.
  • windowObject.closed : 창이 닫혔는지 확인하는 속성으로, 창이 닫히면 true를 반환합니다.
  • clearInterval() : 기능을 사용하여 메모리 누수를 방지하려면 상위 구성 요소가 마운트 해제될 때 간격을 지워야 합니다

code_developer
code_developer

 


 

반응형

 


 

그럼 전체 코드를 한번 봅시다.

 

import React, { useEffect, useState } from 'react';

function ParentComponent() {
  const [childWindow, setChildWindow] = useState(null);

  // 하위 창이 닫힐 때 실행할 콜백 함수
  const onChildClose = () => {
    console.log('Child window closed');
    // 하위 창이 닫힌 후에 실행할 코드
  };

  // 하위 창을 여는 기능
  const openChildWindow = () => {
    const windowFeatures = 'width=600,height=400,resizable,scrollbars=yes,status=1';
    const childWin = window.open('/child-path', 'ChildWindow', windowFeatures);
    setChildWindow(childWin);
  };

  useEffect(() => {
    let intervalId;

    if (childWindow) {
      // 매초 자식 창이 닫혀 있는지 확인한다.
      intervalId = setInterval(() => {
        if (childWindow.closed) {
          clearInterval(intervalId);
          onChildClose();
        }
      }, 1000);
    }

    // 마운트 해제 시 Interval 해제
    return () => {
      if (intervalId) {
        clearInterval(intervalId);
      }
    };
  }, [childWindow]);

  return (
    <div>
      <button onClick={openChildWindow}>Open Child Window</button>
    </div>
  );
}

export default ParentComponent;

 

 

이 코드는 React의 useStateuseEffect 훅을 사용하여 새 창을 열고, 해당 창이 닫힐 때 onChildClose 함수를 실행합니다. setInterval 함수를 사용하여 1초마다 새 창의 상태를 확인하고, 닫힌 경우에는 clearInterval로 타이머를 해제한 후, 콜백 함수를 호출합니다.

 

이와 같이 구현하면 새 창을 열고 닫힐 때 원하는 기능을 실행할 수 있으며, 이는 웹 애플리케이션의 사용성을 향상시키는 데 도움이 됩니다. 오류나 더 좋은 구현 방법에 대한 의견이 있다면, 피드백을 주시기 바랍니다. 

 

 


 

 

 

IT 대모험 아직 끝나지 않았습니다.

언제나 공부하는 마음으로 새로운 언어, 새로운 환경에 적응해 나가길 바랍니다.

그럼 다음 또 다른 포스팅으로 찾아 뵙겠습니다~ 

728x90
반응형
728x90
반응형

이전 포스팅에서 웹팩이 무엇인지와

웹팩 초기 설정하는 방법을 알아보았습니다

혹시 못 보셨다면 아래의 포스팅을 참고해주세요.

 

그리고 웹팩에 관해 알아볼 것을 리스트로 정리해보았습니다

 

 


 

웹팩(Webpack) 공부 목차

 

  1. 웹팩 초기 설정 방법
  2. CSS & SASS 적용하기
    • 현재 포스팅입니다
  3. Cache Busting an Plugins ( 캐시 무효화 )
  4. html-webpack-plugin 설치
  5. template 파일 생성
  6. Splitting Dev & Production 
  7. webpack-dev-server
  8. 이미지 파일 적용하기 ( html-loader, file-loader ) 
  9. clean-webpack
  10. Extract CSS & Minify HTML / CSS / JS
  11. 바벨 설치하기
  12. 리액트 적용해보기
  13. Multiple Entrypoints & Vendor.js
  14. 여러 페이지별 파일을 번들링 하기

 


 

 

목차에 포스팅이 끝나면 내부 링크를 걸도록 하겠습니다

앞으로 많은 설정법을 통해 웹팩을 완벽하게 파헤쳐 봅시다!!

 

 

그럼 다시 본론으로 넘어가서

css적용 하기 이전에 우선 html과 필요한 js파일을 만들도록 하겠습니다 

 

 

CSS적용 전 준비단계

 

src폴더에 app이라는 폴더를 만들어서

button.jscolor.js 파일을 생성해 줍니다

 

 

 

button.js

 

const btnChange = document.querySelector(".btn-change");
export { btnChange };

 

 

color.js

 

const cardTitle = document.querySelector(".card-title");
const changeColor = function (color) {
  cardTitle.style.backgroundColor = color;
};
export { changeColor };

 

 

마지막으로 dist폴더 안에 index.html을 생성합니다

아래의 코드와 함께 말이지요!

 

 

index.html

 

<!DOCTYPE html>
<html lang="en">
  <head>
    ......
  </head>
  <body>
    <h1 class="card-title">웹팩 활용법</h1>
    <button class="btn-change">버튼 변경</button>
    <script src="main.js"></script>
  </body>
</html>

 

 

생성하셨다면 아래와 같이

폴더가 만들어졌겠지요?

 

 

 

웹팩CSS적용
폴더구조

 

 

그럼 지금까지 현재의 html을 실행하게 된다면

 

웹팩적용하기
웹팩 적용 전 이미지

 


 

웹팩(Webpack) CSS loader 설지 및 적용하기

 

 

그럼 이제 웹팩(Webpack)에

CSS를 적용하기 위해서는 CSS Loader 설치 및 적용이 필요합니다

아래 링크 주소에서 웹팩 Loader 종류와 CSS Loader 적용 방법을 확인해 봅시다

 

오른쪽 사이드 바에 공식문서가 링크가 있으니 들어가셔서

검색창에 loaders, css loader 검색하시면 확인하실 수 있습니다

 

웹팩공식문서
웹팩 공식문서 가이드

 

 

Loader는 타입 스크립트와 같은 다른 언어를 자바스크립트로 변경하거나 이미지를 dataURL로 변경할 수 있습니다

CSS 파일을 자바스크립트 모듈에서 직접 import 할 수 있는 방법도 제공합니다

 

 

우선 라이브러리를 설치합니다

 

npm install style-loader css-loader --save-de

 

 

다음 webpack.config.js를 수정합니다

모듈의 오브젝트 객체는 외부 패키지를 사용할 경우에

testuse를 사용해서 외부 패키 지명을 넣어 줍니다

 

이때 중요한 것은 패키지는 뒤에서부터 해석이 된다는 것들을 알고 계셔야 합니다.

그래서 css-loader를 불러온 다음에 style-loader에 적용하여 불러온다는 것을 기억하셔야 합니다.

 

그럼 아래의 코드로 변경해주세요

 

 

const path = require("path");

module.exports = {
 mode: "development",
 entry: "./src/index.js",
 output: {
     filename: "main.js",
     path: path.resolve(__dirname, "dist")
 },
 module: {
     rules: [
         {
             test: /\.css$/,
             use: ["style-loader", "css-loader"]
         }
     ]
 }
};

 

 

 

아래의 이미지에 보시면 css폴더가 보이시나요

그리고 하위 디렉터리 main.css가 생성된 것이 보이실 겁니다

 

 

css폴더경로
css폴더 경로

 

 

 

생성해주고 main.css에는 아래와 같은 코드를 추가하시길 바랍니다

 

body {
  background: yellow;
}

 

 

그렇게 되고 index.html을 실행하게 되면

아래와 같이 css가 적용된 화면이 노출됩니다

 

 

웹팩CSS적용화면
CSS적용 모습

 

 

이것을 응용해서 SASS 적용해보겠습니다

 

SASS 적용하기

 

 

 

아래의 라이브러리를 추가해줍니다

 

npm install sass-loader node-sass --save-dev

 

 

그리고 아래의 코드처럼 sass-loader를 추가해주며

기존 css파일의 확장자명을 scss로 변경해줍니다

 

 

  module: {
    rules: [
      {
        test: /\.css$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
    ],
  },

 

 

동작 순서는 sass-loader -> css-loader -> style-loader가 되니 참고하세요!

 

 

이렇게 CSS loader 설치와 활용 방법을 알아보았습니다

어떻게 보면 정말 간단한데 모르면 정말 힘들겠죠

앞으로 많이 남았으니 같이 힘내 봅시다

 

대모험은 아직 끝나지 않아서 갈길이 너무 멀고도 험난하네요

사실 끝나지 않을 모험이라는 것을 잘 알고 있지만

 

아무튼 파이팅 합시다

 

 

728x90
반응형
728x90
반응형

 


 

웹팩(Webpack)이란?

 

웹팩이란
웹팩의 역할

 

SPA(Single Page Application) 개발이 많아지면서 자바 스크립트의 코드 분량이 크게 증가하여

초기 단계에서 UI 컴포넌트와 자바스크립트의 코드를 분리하여 작업을 수행하였습니다

그렇게 되면서 개별적인 자바스크립트 파일을 불러와 웹사이트 로딩 속도가 문제가 되었습니다

그래서 그 문제의 해결책으로 자바스크립트 파일을 하나의 js파일로 번들링 작업을 하게 되었고

그렇게 새롭게 등장한 웹팩(Webpack)입니다.

 

공식 사이트는 오른쪽 사이드바에 등록해놓겠습니다 

 

이러한 과정에서 웹팩(Webpack)은 번들링 작업에서는 필수적인 기능으로 발전하였습니다

요즘은 프로젝트를 생성할 초기에 자동으로 만들어주기때문에 

관심이 적어지기도 합니다

하지만 중요하고 어떤 과정으로 웹팩이 작동하는지도

한번알아보는것도 정말 중요한 과정입니다

그럼 설치부터 알아볼까요

 

 


 

 

웹팩(Webpack) 설치 및 설정

 

웹팩을 설치하기 위해서는 Node가 필요합니다.

다운로드하는 사이트는 사이드 바에 등록해놓겠습니다

설치 후 아래의 코드를 실행해서 

 

버전을 확인해서 설치유무를 확인해 봅니다

 

npm -v
node -v

 

 

설치가 완료되었으면, 실습용 폴더를 생성한 후

해당 폴더 안에서 npm 초기화 및 웹팩 설치 작업을 진행합니다.

실습용 폴더명 은 webpack을 제외하고,

작성해야 npm 충돌이 일어나지 않는다.

npm init -ypackage.json 생성 시 모든 기본값을 자동으로 채워줍니다

 

 

 

npm init -y
npm install webpack webpack-cli --save-dev

 

 

그리고 package.js 파일에서 script 부분을 수정해 줍니다

 

 

{
     "name": "Webpack_Test",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
         "start": "webpack" // 이부분을 수정한다
      },
     "keywords": [],
     "author": "",
     "license": "ISC",
     "devDependencies": {
         "webpack": "^4.44.1",
         "webpack-cli": "^3.3.12"
     }
}

 

 

 

웹팩(Webpack)으로 빌드하기 위해서는 src폴더 안에서 파일 관리가 이루어져야 합니다.

그럼 src 폴더와 index.js 파일을 생성한 다음 아래와 같이 코드를 작성한다

 

 

 

console.log("Hell World");

 

 

새로운 dist폴더와 함께 main.js파일이 생성되고 압축된 코드가 작성되어있다.

그리고 그 압축된 코드 안에는 console.log("Hell World");

가 포함되어있는 것을 확인할 수 있습니다

 

src폴더 안에 있는 파일들을 바탕으로 번들링 작업이 진행된다는 것을 알고 계시면 됩니다

그래서 src안에서 프로젝트 페이지등 작업이 이루어지게 됩니다

 

 

다음은 dist폴더 안에 index.html 파일을 아래의 코드를 작성해서 생성합니다

 

 

반응형

 

 

<!doctype html>
<html lang="en">
<head>
 ......
</head>
<body>
 <h1 class="card-title">Card Title</h1>
 <button class="btn-change">버튼 변경</button>
 <script src="main.js"></script>
</body>
</html>

 

 

그리고  index.html을 크롬 브라우저로 실핼하게되면

아래와 같은 이미지가 노출되며 콘솔로 hell world가 노출되는 것을

확인할 수 있습니다

 

 

웹팩-실행이미지
웹팩 실행 이미지

 

 

 

 

이제 모든 준비는 완료되었습니다

webpack을 좀 더 설정해봅시다

 

 

webpack.config.js 파일 생성하여 아래 코드를 작성합니다

해당 파일은 모듈이나 플러그인을 관리하는 파일입니다

 

 

module.exports = {
 entry: "./src/index.js",
 
 output: {
 filename: "hello.js",
 path: path.resolve(__dirname, "COOODE")
 }
};

 

  • entry : 압축시킬 파일 
  • output : 압축한 파일을 관리할 폴더와 파일명
  • path : 절대 경로 기준을 폴더 생성 ( 이러한 이유로 __dirname을 사용할 수 있음 )
  • resolve() : 인자로 받은 경로를 하나로 합쳐 문자열 형태로 리턴한다.
  • __dirname : 현재 경로를 의미

 

 

package.json 파일 경로를 기준으로 COOODE 폴더가 생성이 되고,

해당 폴더 안에 만들어진 hello.js 안에는 압축된 형태로 코드가 작성되어있습니다.

 

 

 

 

아래와 같이 다시 명령을 수정해줍니다

이 작업은 웹팩을 사용할 때 내가 설정한 파일의 기준으로 웹팩을 동작시키겠다는 명령어라고 생각합시다

 

 

 

"scripts": {
 "start": "webpack --config webpack.config.js"
 },

 

 

webpack.config.js를 다시 수정합니다

이제는 mode를 추가하며

filename도 우리가 정할수 있습니다

path도 설정이 가능합니다

 

const path = require("path");

module.exports = {
 mode: "development",
 entry: "./src/index.js",
 output: {
     filename: "main.js",
     path: path.resolve(__dirname, "dist")
 }
}

 

development : 개발자 모드로 배포할 때 사용합니다

pathnode.js의 함수인 require을 사용합니다

그리고 output 안에 path를 지정할 수 있는데

이것은 번들링 작업을 한 main.js의 파일을 어느 위치에 있는 폴더 안에 넣을것이을 지정할 수 있습니다

path.resolve(__dirname, 폴더명)이 함수는 프로젝트의 절대 경로를 문자열로 가져와

폴더는 dist로 지정하는 것입니다

dist폴더 안에 main.js를 생성 하게됩니다

 

또 한,

main.js를 확인해보시면 압축이 안되어진 상태일것입니다

그이유는 개발자모드이기 때문입니다

 

 

 

이렇게 웹팩을 설정법을 알아보았습니다

다음에는 CSS파일등은 더욱 많은 것들을 적용해보고

알아보도록 하겠습니다

그럼! 다음 포스팅 봐요!!

 

우리의 대모험은 끝나지않았습니다!!!

728x90
반응형
728x90
반응형

REST API가 아닌 다른방식으로 데이터를 가져올 수 있다

그것은 페이스북에서 개발하고 사용하는 GraphQL이다 

 

이 방법은 URL이 필요없으며, 당연히 Parameter도 필요없다

그말 즉슨, form-data와 body-parse하는 모든 과정들이 필요가 없어진다 

 

이 하나만으로도 엄청난 장점일 수밖에 없다

 

이전 페이지에서 셋팅법을 소개 하였고 그 것을 조금 따라해본다면 쉽게 결과물을 가져올 준비가 되었을 것이다

 

 

스키마 정의 즉 데이터 가져올 타입과 데이터의 일부분만 가져올 수 있게 형식도 지정하게된다


// File:schema.graphql
type Person {
    id: Int!
    name: String!
    age: Int!
    gender: String!	// ! 느낌표의 의미는 필수항목의 의미이다
}                   

type Query {       
    people: [Person]!          // people은 많은 Person을 포함하고있다라는 뜻으로 배열로 묶어준다
    person(id: Int!): Person!  // person의 누구를 찾을것인지 함수와 비슷한 형식을 지정해준다
    						   // 그리고 ':' 뒤에는 리턴되는 형식이 Person이라고 지정한다
}

즉, type을 지정하여 그 객체인 Person을 불러올 때 
person(id: 1){
  name
} // 라고만 하면 id 1에 해당하는 person에 이름을 가지고 오게된다

/*
또한, 간단한 정의는 Query(질문을)를 resolve(해결하는) 함수를 만드는거라고 생각하면된다
그것은 Query라는 타입으로 질문의 타입을 정의하고 그 데이터 형식(타입)을 지정한다
지금은 type Query, type Person이라는 것이다

그리고 이 모듈은 index.js를 생성하면서 GraphQL을 생성할때 Query와 resolvers를 같이 맵핑하여
서버를 구축하게된다
*/

 

이렇게 스키마 정의를 하고 데이터를 어떻게 받을지 어떻게 가공할지에 대한 형식을 정해

우리는 데이터 받을때 형식과 폼을 맞추지 않아도 된다는 것이다

 

그럼 두 번째로는 이 형식에 맞게 데이터를 조작할 함수를 생성한다

 


// File: resolvers.js
import { people, getById } from './db';
const resolvers = {
    Query: {
        people: () => people, 
        person: (_, { id }) => getById(id) 
    }                           
}

export default resolvers;

// 이 resolvers 파일은 schem에 정의되어있는 형식과 타입에 맞춰 우리는 쿼리를 사용할 수 있다

 

이렇게 만들어진 두개의 파일은 API서버를 생성할때

아래와 같이 정의하여 생성하게된다

 


// File: index.js

import { GraphQLServer } from "graphql-yoga";
import resolvers from "./graphql/resolvers"

const server = new GraphQLServer({
    typeDefs: "graphql/schema.graphql", // 스키마정의가 되어있는 곳을 Defs로 둔다
    resolvers   		// 결과 값을 실행할곳을 성정한다 단지 이 4줄로 끝이다
});

server.start(() => console.log("Graphql server Running"));

// API서버를 만들기 위해서는 위와같이 두가지사항을 정의한다
// 정의되는 사항은 파일경로 import 해온 정보들을 저장한다

 

그리고 데이터를 정의하여 연습을 진행하자

 


// File: db.js
export const people = [
    {   
        id: 0,
        name: "Jisu",
        age: 18,
        gender: "female"
    },
    {
        id: 1,
        name: "Deal",
        age: 18,
        gender: "female"
    },
    {
        id: 2,
        name: "JD",
        age: 18,
        gender: "male"
    },
    {
        id: 3,
        name: "Japan Guy",
        age: 18,
        gender: "male"
    },
    {
        id: 4,
        name: "Nicolas",
        age: 18,
        gender: "female"
    },
];

export const getById = id => {
    const filteredPeople = people.filter(person => person.id === id);
    return filteredPeople[0]
}

// db에 우선에서 getById를 함수를 만들어서 데이터를 가공을 한다
// 그 결과를 리턴값으로 돌려준다
// 그 값을 받는 곳은 getById()를 사용하는 곳이다

 


 

db에 간단한 getById 함수를 선언하여 해당하는 id를 사용하는 사용자정보를 구해올 수 있게 한다

 

아래의 사진은 http://localhost:4000/으로 어떻게 데이터가 오는지 확인할 수 있다

 

 

Graph API 활용

 

 

이렇게 기본기를 만들어 보았다

앞으로 무비앱을 만들기위한 기본 토대가 될것이다

 

 

 

 

 

 

 

728x90
반응형
728x90
반응형

ES6 모듈 시스템에서는 default 키워드를 사용하여 모듈에서 기본으로 내보내는 값을 정의할 수 있다.

숫자, 문자, 불리언과 같은 기본형 값과 객체, 함수, 클래스와 같은 참조형 값 모두올 수 있다.

 


export default 'hello';
export default function hello(name) {
  console.log('hello' + name);
};

export default class Hello {
  constructor(greeting) {
    this.greeting = greeting;
  }
  hi(name) {
    console.log(`${this.greeting} ${name}`);
  }
}

default 키워드 사용에 있어 중요한 점이 있는데, default 키워드는 하나의 모듈에서 한 번만 사용할 수 있다.

즉, 한 파일에서하나의 값만 default로 정의할 수 있다.

 

default 키워드 다음에는 var, let, const와 같은 변수 선언 키워드가 올 수 없다.

default는 사실 해당 모듈의 기본값을 선언하는 것이기 때문에 변수 선언 키워드가 오면 문법적 오류를 발생한다

예를 들어, A라는 모듈이 있으면 A.default = 'hello'와 같이 A모듈의 기본값을 할당한다고 볼 수 있다

 

 


//File: app.js
import Hello from './hello,js';

const koreanHi = new Hello('안녕하세요.');
koreanHi.hi('하린');

 


hello.js에서 default로 내보낸 값을 가져오고 import하는 모듈에서(현재 파일) 이름을 부여한다.

여기에는 Hello라는 이름으로 부여하였다

 

hello.js에서는 클래스를 기본값으로 내보냈기 때문에 new 키워드를 사용하여 객체를 생성한다.

 

Hello 클래스의 인스턴스인 koreanHi의 hi메소드를 호출한다.

 

위 코드를 크롬 콘솔에서 확인하면 다음과 같다

 

결과 : 안녕하세요. 하린


 

이렇게 모듈의 default 값을 가져오는 활용방법을 알아보았다

어느 한 파일에서 export default가 되어있는 부분을 다른 파일에서 불러오는것이 가능하다

그것은 import로 가져오게 되는데 이때 가져올때 이름은 꼭 export default에 맞춰서 import 할 필요가 없다

즉, import하는 파일에서 이름을 지정하여 사용하면된다.

그렇게 사용하면 모듈화된 파일안에 정의된 함수, 변수를 사용할 수 있다

 

다음은 모듈을 여러 이름으로 내보내고 가져오는 방법을 알아보자

 

 

2020/06/08 - [JavaScript/모듈 이해하기] - 자바스크립트 모듈 시스템 이해하기 - 번들링(Bumdling) 웹팩(Webpack)

 

자바스크립트 모듈 시스템 이해하기 - 번들링(Bumdling) 웹팩(Webpack)

ES6의 모듈 자바스크립트 코드를 담고 있는 하나의 파일이다. 즉 하나의 파일이 하나의 모듈이라고 볼 수 있다. ES6의 모듈은 엄격한 모드의 코드이고 import와 export 키워드를 사용한다. export 키워��

tantangerine.tistory.com

 

728x90
반응형
728x90
반응형

splice()

- 특정 시작 인덱스부터 인덱스까지 값을 추가하거나 그 자리에 있는 값을 삭제할 수 있는 메서드

 

- 배열. splice(시작 인덱스, 삭제할 요소의 개수, 추가될 요소들)

 

  • 첫번째 인자인 시작인데스는 배열 요소가 변경될 시작 지점입니다. splice는 특정 위치의 요소를 지정하는 것이 필수라 반드시 첫 번째 인자 값은 배열 길이보다 작아야 유효합니다
  • 두 번째 인자인 삭제할 요소의 개수는 시작 인덱스의 위치부터 삭제하고자 하는 개수만큼 요소를 제거합니다. 이때 해당 요소가 제거됨과 동시에 메서드 호출 결과로 값을 반환합니다
  • 세 번째 인자에 추가될 요소들을 지정하면, 시작 인덱스부터 해당 요소들이 추가됩니다.

 

const fruits = ['melon', 'lemon', 'source', 'apple', 'juice']

fruits.splice(4, 1) // ['melon', 'lemon', 'source', 'apple']

fruits.splice(4, 0, 'grape') // ['melon', 'lemon', 'source', 'apple', 'grape']

fruits.splice(2, 1, 'mandarin', 'strawberry', 'watermelon') 
	// ['melon', 'lemon', 'mandarin', 'strawberry', 'watermelon', 'apple', 'grape']

//결과
// ['melon', 'lemon', 'mandarin', 'strawberry', 'watermelon', 'apple', 'grape']

 

- splice(4, 1)를 실행하면 과일이 아닌 juice 문자열이 추출됩니다.

- splice(4, 0, 'grape')는 삭제할 개수를 지정하지 않아 추출되는 요소가 없습니다. 그러나 세번재인자로 인해 시작 인덱스에 grape 문자열이 추가됩니다.

 

 

배열. indexOf("A")의 활용

- indexOf()는 배열에 해당하는 문자를 찾아서 인덱스 값을 반환한다

- splice와 응용하여 시작인덱스 값을 구할 수 있다

var arr = ["A", "C", "D", "A", "E", "F", "A"];

var arr_splice = arr.splice(1, 3) // 1번부터 3개의 요소 ["C", "D", "A"] 꺼낸다

console.log(arr); // ["A", "E", "F", "A"] console.log(arr_splice) - ["C","D","A"]

arr.splice(arr.indexOf("A"), 1, "a"); // "A"를 찾아서 "a"로 변경한다.

 

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel