Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[JS] Array 의 내장 함수(1) 본문

코딩/JS

[JS] Array 의 내장 함수(1)

코딩거인 2023. 9. 26. 10:31
728x90

Array.prototype.sort()
  • 배열의 요소를 적절한 위치에 정렬한 후 반환
  • 기본 정렬 순서는 유니코드 코드 포인트
//ex) 숫자 배열 sort() 하는 법
[숫자배열].sort((prev, curr) => prev - curr)
역순) [숫자배열].sort((prev, curr) => curr - prev)

 

Array.prototype.from()
  • 유사배열 객체나 반복 가능한 객체를 얕게 복사해 새로운 Array 객체를 생성한다.
// ex) Map 에서 배열 만들기
const mapper = new Map ([ [ ' 1 ' , ' a ' ] , [ ' 2 ',  ' b ' ] ] )
Array.from(mapper.value())     // [ ' a ', ' b ' ]
Array.from(mapper.key())       // [ ' 1 ', ' 2 ' ]

// ex2) Array.from과 화살표 함수
Array.from( [ 1, 2, 3 ] ,  x => x+x)         // [ 2, 4, 6]
Array.from({length : 5}, (v, i) => i )        // [ 0, 1, 2, 3, 4]
Array.prototype.filter()
  • 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환
  • 어떠한 요소도 테스트를 통과하지 못했으면 빈 배열을 반환한다.
Array.prototype.map()
  • map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.
// ex1 )
const array1 = [ 1,4, 9, 16]
const map1 = array1.map( (x) => x * 2 )                 // [ 2, 8, 18, 32]

// ex 2) 배열에 들어가 있는 숫자들의 제곱근을 구하여 새로운 배열로 만들기
var numbers = [ 1, 4, 9 ]
var roots = numbers.map( Math.sqrt )              // [1, 2, 3]

// ex3) map 을 활용해 배열 속 객체를 재구성 하기
var exArray = [ { key : 1, value : 10 },  { key:2 , value : 20}, { key:3 , value : 30 } ]
var reformattedArray = exArray.map( ( obj ) => {
    var rObj = {}
    rObj [ obj.key ] = obj.value
    return rObj            // [ { 1: 10 }, { 2: 20 }, { 3: 30 } ]
} )

// ex4) 인자를 받는 함수를 사용하여 숫자 배열 재구성 하기
var numbers = [ 1, 4, 9 ]
var doubles = numbers.map((num) => {
    return num * 2                            // doubles = [ 2, 8 , 18]
})

// ex5) map 을 포괄적으로 사용하기 ( querySelectorAll )
var elems = doument.querytSelectorAll( '  select option : checked ' )
var value = [ ]. map. call( elems, function (obj) {
    retrun obj.value
})

// ex6)  map 을 포괄적으로 사용하기 2 
var map = Array.prototype.map
var a = map.call( ' Hello World ', ( x ) => return x.charCodeAt(0)))
// [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
Array.prototype.reduce()
  • 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고 하나의 결과값을 반환 한다.
  • Array.prototype.reduceRight() : 오른쪽부터 왼쪽으로 배열을 읽고 수행한다.
  • ex1) 
const array [1, 2, 3, 4]
const initialValue = 0;
const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue);
// 10
  • ex2 ) 중첩 배열 펼칰기
var flattened = [ [0, 1], [ 2, 3 ], [ 4, 5 ] ].reduce(function (accumulator, currentValue) {
    return accumulator.concat(currentValue);
}, []);
// 펼친 결과: [0, 1, 2, 3, 4, 5]
  • ex3 ) 객체배열에서의 값 계산
var initialValue = 0;
var sum = [{ x: 1 }, { x: 2 }, { x: 3 }].reduce(function (
  accumulator,
  currentValue,
) {
  return accumulator + currentValue.x;
}, initialValue);

console.log(sum); // logs 6
  • ex4) 객체 내의 값 인스턴스 갯수 세기
var names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"];

var countedNames = names.reduce(function (allNames, name) {
  if (name in allNames) {
    allNames[name]++;
  } else {
    allNames[name] = 1;
  }
  return allNames;
}, {});
// countedNames is:
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
  • 속성으로 객체 분류 하기
var people = [
  { name: "Alice", age: 21 },
  { name: "Max", age: 20 },
  { name: "Jane", age: 20 },
];

function groupBy(objectArray, property) {
  return objectArray.reduce(function (acc, obj) {
    var key = obj[property];
    if (!acc[key]) {
      acc[key] = [];
    }
    acc[key].push(obj);
    return acc;
  }, {});
}

var groupedPeople = groupBy(people, "age");
// groupedPeople is:
// {
//   20: [
//     { name: 'Max', age: 20 },
//     { name: 'Jane', age: 20 }
//   ],
//   21: [{ name: 'Alice', age: 21 }]
// }

 

728x90

'코딩 > JS' 카테고리의 다른 글

[J.S] js에서의 프록시(Proxy)!  (0) 2023.10.05
[JS] Array 의 내장 함수(2)  (0) 2023.09.26
[JS] 객체 환산 연산자란? (...)  (0) 2023.09.25
메서드 체인(Method Chaining)이란?  (0) 2023.08.14
타입스크립트란???  (0) 2023.08.14