코딩기록

[85] removeTodo / filter - 배열안 객체 중 인수(매개변수)와 동일한 요소 찾기 본문

프론트/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 }
]
*/

 

 

 

 

반응형
Comments