01. indexOf

์–‘ํฌ์ค€ยท2021๋…„ 9์›” 17์ผ
0

JS Array Method

๋ชฉ๋ก ๋ณด๊ธฐ
1/7
post-thumbnail

๐Ÿ“Œ 1-1 indexOf๋ž€?

indexOf์˜ ํ˜•ํƒœ

โœ” ๋ฐฐ์—ด.indexOf(๊ฐ’, ์‹œ์ž‘์ธ๋ฑ์Šค)
โœ” ์‹œ์ž‘์ธ๋ฑ์Šค์— ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด 0๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.
โœ” ๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
โœ” ๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ๊ฐ’์ด ๋ฐฐ์—ด์— ์žˆ์ง€ ์•Š์œผ๋ฉด -1๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ“Œ 1-2 indexOf ์‚ฌ์šฉ์˜ˆ์ œ

const arr = [1,1,1,2,3,3,4];
console.log(arr.indexOf(1)); // 0 ์ถœ๋ ฅ
console.log(arr.indexOf(1, 1)); // 1 ์ถœ๋ ฅ
console.log(arr.indexOf(5)); // -1 ์ถœ๋ ฅ

๐Ÿ’ก ์ด์™€ ๊ฐ™์ด ๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
๐Ÿ’ก ์‹œ์ž‘์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
๐Ÿ’ก ๊ฐ’์ด ํ•ด๋‹น ๋ฐฐ์—ด์— ์—†์œผ๋ฉด -1๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ“Œ 1-3 indexOf ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์˜ˆ์ œ 1.

์ด์™€ ๊ฐ™์€ ํŠน์„ฑ์„ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์•ˆ์— ์žˆ๋Š” ๊ฐ’์˜ ์ค‘๋ณต์ œ๊ฑฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

const arr = [1,1,1,2,3,3,4];
const filter = []; // ์ค‘๋ณต์ œ๊ฑฐํ•  ๊ฐ’์„ ๋„ฃ์„ ๋นˆ ๋ฐฐ์—ด ์„ ์–ธ
// arr์˜ ๋ชจ๋“  ์›์†Œ ํƒ์ƒ‰
for(let i = 0; i < arr.length; i++) {
  // filter์˜ indexOf์˜ ๊ฐ’์ด -1์ด๋ฉด filter์— arr[i]์›์†Œ ์‚ฝ์ž…
    if(filter.indexOf(arr[i]) === -1) {
        filter.push(arr[i]);
    }
}
console.log(filter); // [1,2,3,4] ์ถœ๋ ฅ

๐Ÿ’ก ์ด๋Ÿฐ์‹์œผ๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐ์—ด์•ˆ์— ์žˆ๋Š” ๊ฐ’ ์ค‘๋ณต์ œ๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“Œ 1-4 indexOf ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์˜ˆ์ œ 2.

๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ค‘๋ณต์ œ๊ฑฐ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ณ  ๋ฐฐ์—ด์˜ ๋ฉ”์†Œ๋“œ์ธ filter๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

const arr = [1,1,1,2,3,3,4];
// ๊ณ ์ฐจํ•จ์ˆ˜์ธ filter ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด return ๊ฐ’์ด true๊ฒฝ์šฐ์— ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
const filter = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(filter); // [1,2,3,4] ์ถœ๋ ฅ

๐Ÿ’ก arr.indexOf(item)์ด ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•จ์œผ๋กœ filter์˜ ์ธ๋ฑ์Šค์™€ ์ผ์น˜ํ•˜๋ฉด ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ค‘๋ณต๊ฐ’์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ 1-5 indexOf ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์˜ˆ์ œ 3.

ํ•จ์ˆ˜์˜ ์ตœ๋นˆ๊ฐ’ ์ฐพ๊ธฐ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

const arr = [1,1,1,2,3,3,4];
// ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ๋ฐฐ์—ด ์ƒ์„ฑ(์› ๋ฐฐ์—ด๊ณผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ)
const compare = arr.filter((item, index) => arr.indexOf(item) === index);
const num = []; // ์นด์šดํŒ… ์ˆซ์ž ์ด๋ฆ„
const count = []; // ํ•จ์ˆ˜์•ˆ์˜ ์ˆซ์ž ์นด์šดํŒ…
for(let i = 0; i < compare.length; i++) {
    let answer = 0;
    let index = arr.indexOf(compare[i]);
    while(index !== -1) {
        answer++;
        index = arr.indexOf(compare[i], index + 1); // index๊ฐ€ -1์ด ๋ ๋•Œ๊นŒ์ง€ ๋ฃจํ”„
    }
    num.push(compare[i]);
    count.push(answer);
    answer = 0;
}
const max = count.indexOf(Math.max(...count)); // ์ตœ๋นˆ๊ฐ’ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ
console.log(num, count, max, num[max]); 
// num = [1,2,3,4] count =[3,1,2,1] max = 0 num[max] = 1

๐Ÿ’ก indexOf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ๋นˆ๊ฐ’ ์ฐพ๊ธฐ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฐธ๊ณ ๋ฌธ์„œ
MDN = Array.prototype.indexOf()

profile
JS ์ฝ”๋ฆฐ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€