๐Ÿง‘๐Ÿป‍๐Ÿ’ป ๊ฐœ๋ฐœ๊ฐœ๋ฐœ/javascript

๋ฐฐ์—ด ์š”์†Œ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ, ๋ฐฐ์—ด ์š”์†Œ ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ/ koans

Seungjae Lee 2021. 5. 27. 09:38

1. ๋ฐฐ์—ด ์š”์†Œ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ

[].push() : ๋ฐฐ์—ด์˜ ๋์— ์š”์†Œ(element) ์ถ”๊ฐ€

let arr = ['seung', 'jae', 'lee']

arr.push('good')

console.log(arr)
// ["seung", "jae", "lee", "good"]

[].pop() : ๋ฐฐ์—ด์˜ ๋์— ์š”์†Œ(element) ์‚ญ์ œ

console.log(arr)
["seung", "jae", "lee", "good"]

arr.pop()

console.log(arr)
// ["seung", "jae", "lee"]

[].unshift() : ๋ฐฐ์—ด์˜ ๋งจ ์•ž์ชฝ์— ์š”์†Œ(element) ์ถ”๊ฐ€

console.log(arr)
//["seung", "jae", "lee"]

arr.unshift('nice')

console.log(arr)
//["nice", "seung", "jae", "lee"]

[].shift() : ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ(element) ์‚ญ์ œ

console.log(arr)
//["nice", "seung", "jae", "lee"]

arr.shift()

console.log(arr)
//["seung", "jae", "lee"]


2. ๋ฐฐ์—ด ์š”์†Œ ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

[].indexOf() : ๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’์˜ index๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜(์ฒซ ๋ฒˆ์งธ ๊ฐ’), ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜

let arr = ["nice", "seung", "jae", "lee"]

arr.indexOf("seung")
// 1
arr.indexOf("Seung")
// -1

arr.indexOf("seung") !== -1
// true
arr.indexOf("molla") !== -1
// false

[]. includes() : ๋ฐฐ์—ด์˜ ํŠน์ • ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํŒ๋ณ„(๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ : Internet Explorer ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Œ)

arr.includes("seung")
//true
arr.includes("Seung")
//false

 

Koans

describe('Array์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.', function () {
  it('Array์˜ ๊ธฐ๋ณธ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.', function () {
    const emptyArr = [];
    expect(typeof emptyArr === 'array').to.equal(false);
    expect(emptyArr.length).to.equal(0);

    const multiTypeArr = [
      0,
      1,
      'two',
      function () {
        return 3;
      },
      { value1: 4, value2: 5 },
      [6, 7],
    ];
    expect(multiTypeArr.length).to.equal(6);
    expect(multiTypeArr[0]).to.equal(0);
    expect(multiTypeArr[2]).to.equal('two');
    expect(multiTypeArr[3]()).to.equal(3);
    expect(multiTypeArr[4].value1).to.equal(4);
    expect(multiTypeArr[4]['value2']).to.equal(5);
    expect(multiTypeArr[5][1]).to.equal(7);
  });

  it('Array์˜ ์š”์†Œ(element)๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.', function () {
    const arr = [];
    expect(arr).to.deep.equal([]);

    arr[0] = 1;
    expect(arr).to.deep.equal([1]);

    arr[1] = 2;
    expect(arr).to.deep.equal([1, 2]);

    arr.push(3);
    expect(arr).to.deep.equal([1, 2, 3]);

    const poppedValue = arr.pop();
    expect(poppedValue).to.equal(3);
    expect(arr).to.deep.equal([1, 2]);
  });

  it('Array ๋ฉ”์†Œ๋“œ slice๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.', function () {
    const arr = ['peanut', 'butter', 'and', 'jelly'];

    expect(arr.slice(1)).to.deep.equal(['butter', 'and', 'jelly']);
    expect(arr.slice(0, 1)).to.deep.equal(['peanut']);
    expect(arr.slice(0, 2)).to.deep.equal(['peanut', 'butter']);
    expect(arr.slice(2, 2)).to.deep.equal([]);
    expect(arr.slice(2, 20)).to.deep.equal(['and', 'jelly']);
    expect(arr.slice(3, 0)).to.deep.equal([]);
    expect(arr.slice(3, 100)).to.deep.equal(['jelly']);
    expect(arr.slice(5, 1)).to.deep.equal([]);

    // arr.slice๋Š” arr์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
    // ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” arr ์ „์ฒด๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋‹ˆ ๊ธฐ์–ตํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
    expect(arr.slice(0)).to.deep.equal(['peanut', 'butter', 'and', 'jelly']);
  });

  it('Array๋ฅผ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ, reference๊ฐ€ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.', function () {
    // call(pass) by value์™€ call(pass) by reference์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.
    const arr = ['zero', 'one', 'two', 'three', 'four', 'five'];

    function passedByReference(refArr) {
      refArr[1] = 'changed in function';
    }
    passedByReference(arr);
    expect(arr[1]).to.equal('changed in function');

    const assignedArr = arr;
    assignedArr[5] = 'changed in assignedArr';
    expect(arr[5]).to.equal('changed in assignedArr');

    const copiedArr = arr.slice();
    copiedArr[3] = 'changed in copiedArr';
    expect(arr[3]).to.equal('three');
  });

  it('Array ๋ฉ”์†Œ๋“œ shift์™€ unshift๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.', function () {
    const arr = [1, 2];

    arr.unshift(3);
    expect(arr).to.deep.equal([3, 1, 2]);

    const shiftedValue = arr.shift();
    expect(shiftedValue).to.deep.equal(3);
    expect(arr).to.deep.equal([1, 2]);
  });
});