Skip to content

Differenceย #54

@hsskey

Description

@hsskey

๋ฌธ์ œ ์„ค๋ช… | Array Difference Implementation

๋ฐฐ์—ด์—์„œ ๋‹ค๋ฅธ ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ์ œ์™ธํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„

๐Ÿ“ ์ œ์•ฝ์กฐ๊ฑด

  • array: ๊ฒ€์‚ฌํ•  ๋ฐฐ์—ด
  • values: ์ œ์™ธํ•  ๊ฐ’๋“ค์˜ ๋ฐฐ์—ด
  • SameValueZero ๋™๋“ฑ์„ฑ ๋น„๊ต ์‚ฌ์šฉ
  • ๊ฒฐ๊ณผ ๊ฐ’์˜ ์ˆœ์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒฐ์ •๋จ

๐Ÿ’ก ์˜ˆ์‹œ

  • Input: difference([1, 2, 3], [2, 3])
    • Output: [1]
  • Input: difference([1, 2, 3], [])
    • Output: [1, 2, 3]

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

Step 1: ๋ฌธ์ œ ์ดํ•ดํ•˜๊ธฐ

  • ์ž‘์€ ์˜ˆ์‹œ๋กœ ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด๊ธฐ
    [1, 2, 3], [2, 3] -> [1]  // 2, 3์ด ์ œ๊ฑฐ๋จ
    [1, , 3], [1] -> [3]      // ๋นˆ ์š”์†Œ๋Š” ๋ฌด์‹œ๋˜๊ณ  1์ด ์ œ๊ฑฐ๋จ

Step 2: ์ ‘๊ทผ ๋ฐฉ๋ฒ•

  • ์ง๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ

    1. ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœํšŒ
    2. ๊ฐ ์š”์†Œ๊ฐ€ ๋‘ ๋ฒˆ์งธ ๋ฐฐ์—ด์— ์žˆ๋Š”์ง€ ํ™•์ธ
    3. ์—†๋Š” ์š”์†Œ๋งŒ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ํฌํ•จ
  • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™œ์šฉ

    • Array.filter() ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
    • Array.includes() ๋ฉ”์†Œ๋“œ๋กœ ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

Step 3: ์ฝ”๋“œ ์„ค๊ณ„

  1. array.filter() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑ
  2. ๊ฐ ์š”์†Œ๋งˆ๋‹ค:
    • values ๋ฐฐ์—ด์— ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
    • ์—†์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ํฌํ•จ
    • ์žˆ์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์—์„œ ์ œ์™ธ

Step 4: ์ฝ”๋“œ ๊ตฌํ˜„

/**
 * @param {Array} array - Array from which different elements are to be removed.
 * @param {Array} values - Array of values that are to be removed from the original array.
 * @return {Array} Returns filtered array.
 */
export default function difference(array, values) {
    return array.filter((item) => {
        return !values.includes(item)
    })
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions