카테고리 없음

20240626 TIL - 마흔아홉번째 splice & ... 스프레드오퍼레이터

8나지 2024. 6. 26. 21:15

 

주제1 splice & ... 스프레드오퍼레이터
작성이유 참고하기 위해

 

문제상황

상황 상황 : 투두아이템
export default [
{
id: 1,
userId: 1,
title: "할일목록",
doneAt: null,
createdAt: "2023-11-11",
updatedAt: "2023-11-11",
},
];
에서 할일을 다했는지(doneAt) 아닌지 수정하고 싶을 때 


해결방법 todoItems.splice(putItemIndex, 1, { ... reInPutTodoItem, doneAt: reInPutTodoItem.doneAt ===null? new Date():null})
해결방법 풀이 : splice {변경 시작할 인덱스, 배열에서 제거할 갯수 , item1, item2 }
; 아이템 1,2 없으면 삭제만

헷갈린 부분 : doneAt: reInPutTodoItem.doneAt
이유 : 길어서 눈에 안들어왔나....

"..." 는 reInPutTodoItem 이라고 정의한 (변경할 투두아이템)의 내용인 id, userId, title,,, 등등을 풀어서 doneAt만 덮어씌운다는건데

콜론부터 이해가 안갔으나

쉽게생각하면 {...reInPutTodoItem, doneAt:1}인것 => id, userId, title, doneAt, createdAt, updatedAt에다 doneAt:1을 덮음
=>같은 이름인 doneAt은 덮어 씌워짐 : id, userId, title, createdAt, updatedAt, doneAt:1 이 됨

 doneAt은 키값이고, 콜론 뒤에 오는게 벨류값 이므로 doneAt에 reInPutTodoItem.doneAt ===null? new Date():null 이 벨류가 들어감 
결론
{
id: id,
userId: userId,
title: title,
doneAt: reInPutTodoItem.doneAt ===null? new Date():null,
createdAt: createdAt,
updatedAt: updatedAt,
}
그 외 추가 : doneAt이 뒤로 추가가 되었으므로 실제 reInPutTodoItem에서는 id, userId, title, createdAt, updatedAt, doneAt 순서가 됨
추추가 : (매개변수) 여러개일경우 위치 중요!! 대신 이름은 바뀌어도 됨 / {매개변수} 여러개일경우 위치 안중요,, 대신 이름중요

 

 

 

 


주제 1 참고사이트 :  https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

 

Array.prototype.splice() - JavaScript | MDN

splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.

developer.mozilla.org