๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ“„ Find Value in Array

1. ๋ฐฐ์—ด์—์„œ ๊ณ ์œ ํ•œ ๊ฐ’ ์ฐพ๊ธฐโ€‹

I. Set(ES6) ์‚ฌ์šฉโ€‹

const array = [6, 4, 3, 2, 4, 1, 6, 3, 2];

const findUniqueValue = (arr) => {
const uniqueValues = new Set(arr);
return [...uniqueValues];
};

console.log(findUniqueValue(array)); // [6, 4, 3, 2, 1]

II. filter ์‚ฌ์šฉโ€‹

const array = [6, 4, 3, 2, 4, 1, 6, 3, 2];

const findUniqueValue = (arr) => {
return arr.filter((value, index, self) => self.indexOf(value) === index);
};

console.log(findUniqueValue(array)); // [6, 4, 3, 2, 1]

2. ๋ฐฐ์—ด์—์„œ ํ•œ ๋ฒˆ๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐ’ ์ฐพ๊ธฐโ€‹

I. indexOf์™€ lastIndexOf ๋น„๊ตโ€‹

const array = [6, 4, 3, 2, 4, 1, 6, 3, 2];

const findSingleValue = (arr) => {
return arr.filter((value) => arr.indexOf(value) === arr.lastIndexOf(value));
};

console.log(findSingleValue(array)); // [1]

II. reduce ์‚ฌ์šฉโ€‹

const array = [6, 4, 3, 2, 4, 1, 6, 3, 2, 8, 9];

const findSingleValue = (arr) => {
return arr.reduce((acc, value) => {
if (arr.indexOf(value) === arr.lastIndexOf(value)) {
acc.push(value);
}
return acc;
}, []);
};

console.log(findSingleValue(array)); // [1, 8, 9]

III. Map์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”โ€‹

ํ•œ ๋ฒˆ์˜ ์ˆœํšŒ๋งŒ์œผ๋กœ ๋ชฉ์ ์„ ๋‹ฌ์„ฑ

const arr = [6, 4, 3, 2, 4, 1, 6, 3, 2, 7, 8, 9];

const findUniqueValuesOptimized = (arr) => {
const uniqueSet = new Set();
const seenSet = new Set();

for (const num of arr) {
if (!seenSet.has(num)) {
uniqueSet.add(num);
seenSet.add(num);
} else {
uniqueSet.delete(num);
}
}

return Array.from(uniqueSet);
};

console.log(findUniqueValuesOptimized(arr)); // [1, 7, 8, 9]

3. ๋‹จ์ผ ํƒ€์ž… ๋ฐฐ์—ด์˜ ํ•ฉ๊ณ„ ๊ณ„์‚ฐโ€‹

I for...of ๋ฃจํ”„๋กœ ๋น ๋ฅด๊ฒŒ ๊ณ„์‚ฐโ€‹

const numberArray = [1, 2, 3, 4, 5];

const sumArray = (arr) => {
let sum = 0;
for (const num of arr) {
sum += num;
}
return sum;
};

II. for ๋ฃจํ”„ ์‚ฌ์šฉโ€‹

const numberArray = [1, 2, 3, 4, 5];

const sumArray = (arr) => {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
};

console.log(sumArray(numberArray)); // 15

4. ๋‹ค์ธต ์ค‘์ฒฉ ๋ฐฐ์—ด์˜ ํ•ฉ๊ณ„ ๊ณ„์‚ฐโ€‹

I. ์žฌ๊ท€ ์‚ฌ์šฉโ€‹

const nestedArray = [1, 2, [3, 4, [5, 6], 7], 8, [9, 10]];

const sumNestedArray = (arr) => {
return arr.reduce((acc, val) => {
return acc + (Array.isArray(val) ? sumNestedArray(val) : val);
}, 0);
};

console.log(sumNestedArray(nestedArray)); // 55

II. flat์œผ๋กœ ๋ฐฐ์—ด ํ‰ํƒ„ํ™”โ€‹

๋ฐฐ์—ด์— ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ flat ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

const nestedArray = [1, 2, [3, 4, [5, 6], 7], 8, [9, 10]];

const sumNestedArray = (arr) => {
return arr.flat(Infinity).reduce((acc, val) => acc + val, 0);
};

console.log(sumNestedArray(nestedArray)); // 55

5. ๋‹ค์ค‘ ํƒ€์ž… ๋ฐฐ์—ด์—์„œ ์ˆซ์ž์˜ ํ•ฉ๊ณ„ ๊ณ„์‚ฐโ€‹

I. reduce๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž ํ•ฉ๊ณ„ ๊ณ„์‚ฐโ€‹

const mixedArray = [1, '2', 3, 'four', 5, true, [6], { num: 7 }, '8.5'];

const sumNumbers = (arr) => {
return arr.reduce((sum, item) => {
if (typeof item === 'number') {
return sum + item;
} else if (typeof item === 'string' && !isNaN(Number(item))) {
// ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ถˆํ•„์š”ํ•˜๋ฉด ์ด ํŒ๋‹จ์„ ์ œ๊ฑฐ ๊ฐ€๋Šฅ
return sum + Number(item);
}
return sum;
}, 0);
};

console.log(sumNumbers(mixedArray)); // 19.5