프론트/JS)코딩테스트
[85] removeTodo / filter - 배열안 객체 중 인수(매개변수)와 동일한 요소 찾기
뽀짝코딩
2024. 8. 8. 21:01
728x90
문제
todos 배열과 todos 배열에서 삭제할 요소의 id를 인수로 전달하면 해당 요소를 삭제해 todos 배열을 반환한다.
- todos 배열 요소의 id 프로퍼티 값은 절대 중복되지 않는다.
- for 문, for…in 문, for…of 문, Array#forEach, Array#splice는 사용하지 않는다.
- todos 배열을 변경하지 않는다.
const removeTodo = (todos, id) => { /* Do something */ };
const todos = [
{ id: 3, content: 'HTML', completed: false },
{ id: 2, content: 'CSS', completed: true },
{ id: 1, content: 'Javascript', completed: false },
];
console.log(removeTodo(todos, 2));
/*
[
{ id: 3, content: 'HTML', completed: false },
{ id: 1, content: 'Javascript', completed: false }
]
*/
풀이
1번풀이 - filter
todo id와 인수로 받은 id가 같지 않은 것만 반환 한다.
const removeTodo = (todos, id) => {
return todos.filter(todo => todo.id !== id)};
const todos = [
{ id: 3, content: 'HTML', completed: false },
{ id: 2, content: 'CSS', completed: true },
{ id: 1, content: 'Javascript', completed: false },
];
console.log(removeTodo(todos, 2));
/*
[
{ id: 3, content: 'HTML', completed: false },
{ id: 1, content: 'Javascript', completed: false }
]
*/
2번풀이 - for문, if문
1. 배열의 길이만큼 for문을 돌면서
2. if문 조건으로 인수로 들어온 id와 배열의 id가 일치하지 않는것만 걸러서
3. 빈배열에 push 한다.
const removeTodo = (todos, id) => {
let result = [];
for (let i = 0; i < todos.length; i++) {
if (todos[i].id !== id) {
result.push(todos[i]);
}
}
return result;
};
const todos = [
{ id: 3, content: 'HTML', completed: false },
{ id: 2, content: 'CSS', completed: true },
{ id: 1, content: 'Javascript', completed: false },
];
console.log(removeTodo(todos, 2));
/*
[
{ id: 3, content: 'HTML', completed: false },
{ id: 1, content: 'Javascript', completed: false }
]
*/
반응형