주제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