JavaScript

hashmap 사용하기 (Object.assign() , Object.keys() )

hojncode 2023. 1. 14. 17:31
const test1 = {}

test1[Date.now()] = {text:"record", work:true}
//{text: 'record', work: true}

//test1 == {현재시간 숫자값: {text:"record", work:true} }

이렇게 object로 변수를 선언하면, Date.now()를 아이디로 사용할 수 있어서 편리하다.

 

하지만 , 리액트에서는 이렇게 사용 할 수 없다 (state 값은 못바꾸는 원칙때문. 따라서 setState를 사용해서 state를 변경해야한다. )

다음 방법을 리액트에서 사용해 볼 수 있다.

Object.assign은 object 를 가져다가 다른 object와 합쳐준다. 그런다음 새로운 object를 리턴해준다. (여기서는 object로 만들었지만, 배열도 선언할 수 있다.)
const newState = Object.assign({}, test1, {[Date.now()]:{work:true}})

//{'test1의 현재시간 숫자값' : {text:"record", work:true}, 'newState의 현재시간 숫자값': {work:true}}

setNewState(newState)

 

Object.keys 사용해서 hash table의 키값 가져오기

Object.keys(hash1) // hash1 의 키값을 가져오고,

Object.keys(hash1).map(x=>hash1[x]) // 키값들을 map 함수로 각 키들의 내용을 얻게됨.

hash1['현재시간 숫자값'] // 해당 키값의 내용을 받음.