김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2018년 8월 26일 일요일

Javascript 배열의 모든것 2 ( filter, some, every, reduce )

 SecureKim     오후 2:08     배열, 자바스크립트, Array, every, filter, json, Node.js Javascript, reduce, some     No comments   


map 은 배열의 모든것 1탄 에서 다루었으니, 다른 것들도 다뤄보도록 한다.

ㆍfilter

말 그대로 배열에서 어떤 값을 필터링 하고 싶을 때 사용한다.

filter 내부 에서 리턴되는 값이 true 이면 해당 원소를 포함하고,
false 이면 포함하지 않는다.

const data = [1, 2, 3, 4, 5]
// 들어온 val 가 짝수인 경우에 true.
// true 이면 새로운 배열에 포함하고, false 이면 제외한다.
// 짝수를 얻어와 보자.
const evenNumber = data.filter(val => (val % 2 == 0 ) );


ㆍEvery, Some 

배열 값들 모두(Every) 그러한가, 몇개(Some)만 그러한가.

당연히 도중에 답을 찾으면 순회를 그만둔다.

const data = [1, 2, 3, 4, 5];
const isAllEven = data.every(val => { return val % 2 == 0 });
console.log(isAllEven); // false
const isSomeEven = data.some(val => { return val % 2 == 0 });
console.log(isSomeEven); // true

ㆍReduce

사실 map 과 filter 를 이용하면 거의 모든 작업을 다 할 수 있을 것 같은 생각이 든다.

하지만 다음과 같이 배열에서 특정 단어의 개수를 세서
새로운 Object 를 만들고 싶을 때 등 복잡한 작업에는 reduce 가 딱이다.

movie = ["spy","oabe","oabe","ray","spy","room","room","once","ray","spy","once"];
var result = movie.reduce( (obj, value, index, array)=> {
    if(obj.hasOwnProperty(value)) {
        obj[value] += 1;
    } else {
        obj[value] = 1;
    }
    return obj;
}, {});
{ spy : 3,
oabe : 2,
ray : 2,
room : 2,
once : 2 }


만약에 관리를 jsonArray 로 하고싶다면, 다음과 같은 방법을 사용해도 된다.

var movie = ["spy","oabe","oabe","ray","spy","room","room","once","ray","spy","once"];
var idxHash = {};
var result = movie.reduce( (arr, value, index, array)=> {
if(idxHash.hasOwnProperty(value)) {
arr[idxHash[value]].count += 1;
} else {
idxHash[value] = arr.length;
arr.push({title:value, count:1});
}
return arr;
}, []);

[ {title: spy , count: 3}
,{title: oabe, count: 2}
,{title: ray , count: 2}
,{title: room, count: 2}
,{title: once, count: 2}]

눈치 챘겠지만 최초 초기화 타입은 json, array 등 다양하게 줄 수 있고,

초기화 값도 줄 수 있다.

결국 배열을 순회하면서 여기에 값을 채워나가는 형태다.



  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
최근 게시물 이전 게시물 홈

0 개의 댓글:

댓글 쓰기

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...
  • 다빈치리졸브로 영상의 음성 보정 (잡음 노이즈 없애기)
      잡음 없애는 방법 1. 음악 쪽 들어가서 음악에서 소스 우클릭 - Normalize Audio Levels 2. 우측의 Mixer에서 Dynamics 더블클릭, Effects아래 +누르고 Metering에 Meter 그럼 아래처럼 나오는데  Gat...
  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...

Blog Archive

  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ▼  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ▼  8월 (2)
      • Javascript 배열의 모든것 2 ( filter, some, every, reduce )
      • Javascript 배열의 모든 것 1탄 ( 선언, 정렬, 2차원배열, 멀티 소팅, 순열,...
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
댓글
Atom
댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates