Array

concat

Description

concat λ©”μ„œλ“œλŠ” 인자둜 주어진 λ°°μ—΄μ΄λ‚˜ 값듀을 κΈ°μ‘΄ 배열에 ν•©μ³μ„œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ ν•©λ‹ˆλ‹€.

Syntax

arrayObj1.concat(arrayObj2)

Example

['H', 'e', 'l', 'l', 'o'].concat(['W', 'o', 'r', 'l', 'd']);
// ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']

이 λ©”μ†Œλ“œλŠ” μƒˆλ‘œμš΄ λ°°μ—΄ 객체λ₯Ό λ°˜ν™˜ ν•©λ‹ˆλ‹€.

slice

Description

νŠΉμ • λ°°μ—΄μ˜ start 와 end 인덱슀의 μƒˆλ‘œμš΄ λ°°μ—΄ 객체λ₯Ό λ°˜ν™˜ ν•©λ‹ˆλ‹€.

Syntax

arrayObj.slice(start, [end])

Parameter

  • arrayObj
    • Array 객체
  • start
    • arrayObject 에 λŒ€ν•œ μ§€μ •λœ λΆ€λΆ„μ˜ μ‹œμž‘
  • end
    • arrayObject 에 λŒ€ν•œ μ§€μ •λœ λΆ€λΆ„μ˜ 끝

Example

['H', 'e', 'l', 'l', 'o'].slice(1)
// ['e', 'l', 'l', 'o']
['H', 'e', 'l', 'l', 'o'].slice(1, 4)
// ['e', 'l', 'l']
['H', 'e', 'l', 'l', 'o'].slice(0, -1)
// ['H', 'e', 'l', 'l']
['H', 'e', 'l', 'l', 'o'].slice(-1, 0)
// []

이 λ©”μ†Œλ“œλŠ” μƒˆλ‘œμš΄ λ°°μ—΄ 객체λ₯Ό λ°˜ν™˜ ν•©λ‹ˆλ‹€.

shift

Description

λ°°μ—΄μ˜ 첫번째 μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³ , 제거된 μš”μ†Œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

Syntax

arrayObj.shift()

Example

var arrayObj = ['H', 'e', 'l', 'l', 'o'];

var shifted = arrayObj.shift();

console.log(shifted);
// 'H'

console.log(arrayObj);
// ['e', 'l', 'l', 'o']

while ꡬ문 μˆ˜ν–‰μ‹œ 첫번째 μš”μ†Œλ₯Ό μ œκ±°ν•˜λ©΄μ„œ 빈 배열이 λ‚˜μ˜¬λ•ŒκΉŒμ§€ λ°˜λ³΅λ¬Έμ„ μˆ˜ν–‰ν•œλ‹€.

var names = ["Andrew", "Edward", "Paul", "Chris" ,"John"];

while( (i = names.shift()) !== undefined ) {
    console.log(i);
}
// Andrew, Edward, Paul, Chris, John

이 λ©”μ†Œλ“œλŠ” λ°°μ—΄μ˜ 길이λ₯Ό λ³€ν•˜κ²Œ ν•©λ‹ˆλ‹€.
λ°°μ—΄μ˜ λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό μ œκ±°ν•˜λŠ”κ±΄ pop λ©”μ†Œλ“œ 이닀.

unshift

Description

μƒˆλ‘œμš΄ μš”μ†Œλ₯Ό λ°°μ—΄μ˜ μ•žμͺ½μ— μΆ”κ°€ν•œλ‹€.
return 값은 μƒˆλ‘œμš΄ μš”μ†Œκ°€ μΆ”κ°€λœ 배열이닀.

Syntax

arrayObj.unshift([element1[, ...[, elementN]]])

Example

var arrayObj = ['1', '2'];

arrayObj.unshift(0);
// arr is [0, 1, 2]

arrayObj.unshift(-2, -1); 
// arr is [-2, -1, 0, 1, 2]

arrayObj.unshift([-3]); 
// arr is [[-3], -2, -1, 0, 1, 2]

이 λ©”μ†Œλ“œλŠ” λ°°μ—΄μ˜ 길이λ₯Ό λ³€ν•˜κ²Œ ν•©λ‹ˆλ‹€.

map

Description

map() λ©”μ†Œλ“œλŠ” λ°°μ—΄λ‚΄μ˜ λͺ¨λ“  μš”μ†Œμ— λŒ€ν•˜μ—¬ 제곡된 ν•¨μˆ˜(callback)λ₯Ό ν˜ΈμΆœν•˜κ³ , κ·Έ κ²°κ³Όλ₯Ό λͺ¨μ•„μ„œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ ν•©λ‹ˆλ‹€.

Syntax

var newAry = arrayObj.map(function callback(currentValue[, index[, array]]) {
    // newAry 의 μƒˆ μš”μ†Œλ₯Ό λ°˜ν™˜
}[, thisArg]);

Parameter

  • callback
    • μƒˆλ‘œμš΄ λ°°μ—΄ μš”μ†Œλ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜
  • currentValue
    • λ°°μ—΄ μš”μ†Œ 쀑 ν˜„μž¬ 처리되고 μžˆλŠ” μš”μ†Œ
  • index
    • ν˜„μž¬ μ²˜λ¦¬λ˜λŠ” μš”μ†Œμ˜ λ°°μ—΄ λ‚΄ 인덱슀
  • array
    • map λ©”μ†Œλ“œκ°€ μ μš©λ˜λŠ” 본래의 λ°°μ—΄
  • thisArg
    • callback을 μ‹€ν–‰ν•  λ•Œ this둜 μ‚¬μš©λ˜λŠ” κ°’ (기본값은 window 객체)

Example

var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);

console.log(numbers);
// [1, 4, 9]

console.log(roots);
// [1, 2, 3]
var numbers = [1, 4, 9];
var doubles = numbers.map(function (num) {
    return num * 2;
});

console.log(doubles);
// [2, 8, 18]
var mapAry = [{key: 1, value, 10}, {key: 2, value: 20}, {key: 3, value: 30}];
var new_mapAry = mapAry.map(function (obj) {
    var new_obj = {}
    new_obj[obj.key] = obj.value;
    return new_obj;
});

console.log(new_mapAry);
// [{1:10}, {2:20}, {3:30}]

μ§€μ •λœ μ‚¬μ΄μ¦ˆλ‘œ μž„μ˜μ˜ λ°°μ—΄ 생성

var SIZE = 10;
var getRandomNumber = function (min, max, floor) { /* 랜덀 κ°’ 제쑰 */ };

var newArray = Array
    .apply(null, {length: SIZE})
    .map(Function.call, function () {
        return getRandomNumber(MIN, MAX)
    });

이 λ©”μ†Œλ“œλŠ” μƒˆλ‘œμš΄ λ°°μ—΄ 객체λ₯Ό λ°˜ν™˜ ν•©λ‹ˆλ‹€.

filter

Description

filter() λ©”μ†Œλ“œλŠ” λ°°μ—΄λ‚΄μ˜ λͺ¨λ“  μš”μ†Œμ— λŒ€ν•˜μ—¬ 제곡된 ν…ŒμŠ€νŠΈ ν•¨μˆ˜(callback)λ₯Ό ν˜ΈμΆœν•˜κ³ , κ·Έ κ²°κ³Όλ₯Ό λͺ¨μ•„μ„œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ ν•©λ‹ˆλ‹€.

Syntax

var newAry = arrayObj.filter(function callback(currentValue[, index[, array]]) {
    // λ°˜ν™˜ν˜•μ΄ boolean κ°’ true 이면 값이 μœ μ§€, false 이면 κ°’ μ‚­μ œ
}[, thisArg]);

Parameter

  • callback
    • μƒˆλ‘œμš΄ λ°°μ—΄ μš”μ†Œλ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜
  • currentValue
    • λ°°μ—΄ μš”μ†Œ 쀑 ν˜„μž¬ 처리되고 μžˆλŠ” μš”μ†Œ
  • index
    • ν˜„μž¬ μ²˜λ¦¬λ˜λŠ” μš”μ†Œμ˜ λ°°μ—΄ λ‚΄ 인덱슀
  • array
    • map λ©”μ†Œλ“œκ°€ μ μš©λ˜λŠ” 본래의 λ°°μ—΄
  • thisArg
    • callback을 μ‹€ν–‰ν•  λ•Œ this둜 μ‚¬μš©λ˜λŠ” κ°’ (기본값은 window 객체)

Example

function isBigEnough(value) {
    return value >= 10;
}

var filterd = [12, 5, 8, 130, 44].filter(isBigEnough);

console.log(filtered);
// [12, 130, 44]

이 λ©”μ†Œλ“œλŠ” μƒˆλ‘œμš΄ λ°°μ—΄ 객체λ₯Ό λ°˜ν™˜ ν•©λ‹ˆλ‹€.

forEach

Description

forEach() λ©”μ†Œλ“œλŠ” λ°°μ—΄ μš”μ†Œλ§ˆλ‹€ ν•œ λ²ˆμ”© 제곡된 ν•¨μˆ˜(callback) ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.

Syntax

arrayObj.forEach(function callback(currentValue[, index[, array]]) {
    // λ°˜ν™˜ν˜• 없이 각 μš”μ†Œλ§ˆλ‹€ ν•¨μˆ˜λ₯Ό μ‹€ν–‰
}[, thisArg]);

Parameter

  • callback
    • μƒˆλ‘œμš΄ λ°°μ—΄ μš”μ†Œλ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜
  • currentValue
    • λ°°μ—΄ μš”μ†Œ 쀑 ν˜„μž¬ 처리되고 μžˆλŠ” μš”μ†Œ
  • index
    • ν˜„μž¬ μ²˜λ¦¬λ˜λŠ” μš”μ†Œμ˜ λ°°μ—΄ λ‚΄ 인덱슀
  • array
    • map λ©”μ†Œλ“œκ°€ μ μš©λ˜λŠ” 본래의 λ°°μ—΄
  • thisArg
    • callback을 μ‹€ν–‰ν•  λ•Œ this둜 μ‚¬μš©λ˜λŠ” κ°’ (기본값은 window 객체)

sort

Description

sort() λ©”μ„œλ“œλŠ” λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μ μ ˆν•œ μœ„μΉ˜μ— μ •λ ¬ν•˜κ³  배열을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
κΈ°λ³Έ μ •λ ¬ μˆœμ„œλŠ” _μœ λ‹ˆ μ½”λ“œ 포인트_에 λ”°λ¦…λ‹ˆλ‹€.

Syntax

arrayObj.sort([compareFunction])

Parameter

  • compareFunction
    • μ •λ ¬ μˆœμ„œλ₯Ό μ •μ˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. (λ―Έ μ§€μ •μ‹œ κΈ°λ³Έ μ •λ ¬ μˆœμ„œμ— 따름)

Example

var fruit = ['orange', 'apple', 'banana'];

console.log(fruit.sort());
// ['apple', 'banana', 'orange']
var score = [4, 11, 2, 10, 3, 1];

// ASCII 문자 μˆœμ„œλ‘œ μ •λ ¬λ˜μ–΄ 숫자의 ν¬κΈ°λŒ€λ‘œ λ‚˜μ˜€μ§€ μ•ŠμŒ
// [1, 10, 11, 2, 3, 4]
score.sort();

// μ˜€λ¦„μ°¨μˆœ μ •λ ¬
// [1, 2, 3, 4, 10, 11]
score.sort(function () {
    return a - b;
});

// λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬
// [11, 10, 4, 3, 2, 1] 
score.sort(function () {
    return b - a;
});

var student = {
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic' },
  { name: 'Zeros', value: 37 }
};

// value κΈ°μ€€μœΌλ‘œ μ •λ ¬
student.sort(function (a, b) {
  if (a.value > b.value) {
    return 1;
  }
  if (a.value < b.value) {
    return -1;
  }
  // a must be equal to b
  return 0;
});

// name κΈ°μ€€μœΌλ‘œ μ •λ ¬
student.sort(function(a, b) {
  var nameA = a.name.toUpperCase(); // ignore upper and lowercase
  var nameB = b.name.toUpperCase(); // ignore upper and lowercase
  if (nameA < nameB) {
    return -1;
  }
  if (nameA > nameB) {
    return 1;
  }

  // 이름이 같을 경우
  return 0;
});

κΈ°μ‘΄μˆœμ„œλŠ” κ·ΈλŒ€λ‘œ 두고 쀑볡 제거

var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];

var uniq = names.reduce(function (a, b){
  if (a.indexOf(b) < 0 ) a.push(b);
  return a;
},[]);

console.log(uniq, names) // [ 'Mike', 'Matt', 'Nancy', 'Adam', 'Jenny', 'Carl' ]

// ν•œ μ€„λ‘œ ν‘œν˜„
return names.reduce(function(a,b){if(a.indexOf(b)<0)a.push(b);return a;},[]);

κΈ°μ‘΄μˆœμ„œλŠ” κ·ΈλŒ€λ‘œ 두고 쀑볡 제거

var uniq = names.slice() // μ •λ ¬ν•˜κΈ° 전에 볡사본을 λ§Œλ“ λ‹€.
  .sort(function (a, b){
    return a - b;
  })
  .reduce(function (a, b){
    if (a.slice(-1)[0] !== b) a.push(b); // slice(-1)[0] 을 톡해 λ§ˆμ§€λ§‰ μ•„μ΄ν…œμ„ κ°€μ Έμ˜¨λ‹€.
    return a;
  },[]); //aκ°€ μ‹œμž‘λ  λ•Œλ₯Ό μœ„ν•œ λΉ„μ–΄μžˆλŠ” λ°°μ—΄

// ν•œ μ€„λ‘œ ν‘œν˜„
return names.slice().sort(function(a,b){return a - b}).reduce(function(a,b){if (a.slice(-1)[0] !== b) a.push(b);return a;},[]);

indexOf

Description

indexOf λ©”μ„œλ“œλŠ” λ°°μ—΄μ—μ„œ μ§€μ •λœ μš”μ†Œλ₯Ό 찾을 μˆ˜μžˆλŠ” 첫 번째 인덱슀λ₯Ό λ°˜ν™˜ν•˜κ³  μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ -1을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

Syntax

arrayObj.indexOf(element)

Parameter

  • arrayObj
    • λ°°μ—΄ 객체
  • element
    • 찾을 μš”μ†Œ

Example

var a = [2, 9, 9]; 
a.indexOf(2); // 0 
a.indexOf(7); // -1

if (a.indexOf(7) === -1) {
  // μš”μ†Œκ°€ 배열에 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
}

Polyfill

  • IE 8 μ΄ν•˜ 지원 μ•ˆν•¨
var indexOf = Array.prototype.indexOf || (function (prop, s) {
  for (var i = (s || 0); i < this.length; i++) {
    if (this[i] === prop) { return i; };
  }

  return -1;
});
if (indexOf.call(arrayObj, value) > -1) {
    console.log('value is contain');
} else {
    console.log('value is not contain');
}