배열(Array) & 유사배열(Array-like) , Array.from & Object.entries
ㆍArray.from(유사배열) 유사배열 → 배열로 변환하여 리턴
ㆍObject.entries(유사배열) 유사배열 → 배열(key 를 가지는 2차원)로 변환하여 리턴
ㆍ배열
let tmp = [ ‘bmw’ , ‘audi’ , ‘benz’ , ‘hyundai’]
ㆍ유사배열 : 유사 배열 객체란, 키가 인덱스 값으로 되어있고 길이를 나타내는 length 속성을 갖는 객체를 의미합니다.
let tmp = { 0:’bmw’ , 1:’auid’ , 2:’benz’ , 3:’HYUNDAI’ , length : 4}
– 반드시 key 를 ‘숫자’로 포함해야함
– 반드시 length 를 포함해야함
※ 유사배열 Array.from 으로 배열변환
let tmp = { 0:’bmw’ , 1:’auid’ , 2:’benz’ , 3:’HYUNDAI’ , length:4 } // 유사배열은 length 속성이 반드시 있어야함
let tmpArray = Array.from(tmp)
console.log(tmpArray ) // 정상적으로 반영됨
———–출력————–
———–출력————–
0: “bmw”
1: “auid”
2: “benz”
3: “HYUNDAI”
length: 4
1: “auid”
2: “benz”
3: “HYUNDAI”
length: 4
→ key 가 숫자가 아닌경우
let tmp = { ‘a’:’bmw’ , ‘b’:’auid’ , ‘c’:’benz’ , ‘d’:’HYUNDAI’ , length:4} // key 가 숫자가 아니라서 안됨!!!
※ 유사배열 Object.entries 으로 배열변환
→ key(숫자) 값이 있는경우 그대로 활용, 없는경우 key index 생성
→ key(숫자) 값이 있는경우 그대로 활용, 없는경우 key index 생성
let tmp = { 0:’bmw’ , 1:’auid’ , 2:’benz’ , 3:’HYUNDAI’, length:4 } // key 값이 있는경우 키를 그대로 활용
let tmpArray = Object.entries(tmp)
let tmp2 = [ ‘bmw’ , ‘auid’ , ‘benz’ , ‘HYUNDAI’ ] // key 값이 없는 경우 key(숫자) 값 생성
let tmpArray2 = Object.entries(tmp2)
console.log(Array.isArray(tmp2)) // 배열확인 True
console.log(tmpArray ) // 정상적으로 반영됨
[ [‘0’, ‘bmw’] , [‘1’, ‘auid’] , [‘2’, ‘benz’] , [‘3’, ‘HYUNDAI’] , [‘length’, 4] ]
———–출력————–
(key(숫자)가 있느 경우나 없는경우나 결과는 같음)
0: (2) [‘0’, ‘bmw’]
1: (2) [‘1’, ‘auid’]
2: (2) [‘2’, ‘benz’]
3: (2) [‘3’, ‘HYUNDAI’]
4: (2) [‘length’, 4]
length: 5
1: (2) [‘1’, ‘auid’]
2: (2) [‘2’, ‘benz’]
3: (2) [‘3’, ‘HYUNDAI’]
4: (2) [‘length’, 4]
length: 5
// 키가 문자인경우
let inputList = { ‘a’:’bmw’ , ‘b’:’auid’ , ‘c’:’benz’ , ‘d’:’HYUNDAI’}
———–출력————–
(key가 숫자가 아닌경우 그대로 문자로 사용)
———–출력————–
(key가 숫자가 아닌경우 그대로 문자로 사용)
0: (2) [‘a’, ‘bmw’]
1: (2) [‘b’, ‘auid’]
2: (2) [‘c’, ‘benz’]
3: (2) [‘d’, ‘HYUNDAI’]
4: (2) [‘length’, 4]
let selList = document.getElementsByClassName(“_selClass”);
→ HTMLCollection(3) [ input#id1._selclass , input#id2._selclass , input#id3._selclass ]
// _selClass 클래스 이름을 갖는 객체들의 유사배열(열거형)
// selList 배열형식을 가지고 있는 유사배열(array-like) 이다
// forEach 나 map 사용불가 (Array.from 또는 Object.entries 로 변환해야함)
// 증거 1) console.log(Array.isArray(selList) – false 나옴
// 증거 2) console.log(selList); // length 가 존재함
// 증거 3) for(var i in selList) { console.log(i) } – 속성출력 for ~ in 사용시, 배열요소외에, 속성이보임(length)
selList.forEach( (x) =>{ }) // forEach , map 사용불가 (배열만 사용가능)
console.log(Array.isArray(selList)) // 배열인지 확인 False
※ Array.from 열거형 → 배열로 변환
let arrObjList = Array.from(selList)
console.log(Array.isArray(arrObjList )) // 배열확인 True forEach 사용가능
※ Object.entries 열거형/유사배열(객체) → 배열로 변환
let arrObjList = Object.entries(selList)
console.log(Array.isArray(arrObjList )) // 배열확인 True forEach 사용가능
Array.from(btnTelDelList).forEach(e =>{
e.addEventListener(“click”,function()
{
var idxforDel = e.getAttribute(‘data-idx’);
var selid = e.getAttribute(‘data-select-id’);
if(idxforDel == “”)
alert(“데이터를 선택해주세요”)
else
{
document.getElementById(“ifrStatus”).src= goUrl;
}
})
});