> 웹 프론트엔드 > JS 튜토리얼 > HTMLCollection/NodeList/pseudo 배열을 array_javascript 스킬로 변환하는 구현 방법

HTMLCollection/NodeList/pseudo 배열을 array_javascript 스킬로 변환하는 구현 방법

WBOY
풀어 주다: 2016-05-16 18:05:42
원래의
2043명이 탐색했습니다.

여기서 다음 조건을 만족하는 객체를 의사 배열
1, 길이 속성
2, 인덱스로 데이터 저장
3, 배열 푸시, 팝 및 기타 방법이 없는 개체

1과 같은 함수 내의 인수입니다.
2. document.forms, Form.elements, Select.options, document.getElementsByName(), document.getElementsByTagName(), childNodes/children 등을 통해 얻은 컬렉션(HTMLCollection, NodeList)
3.

코드 복사 등의 특수 작성 방법이 있는 개체
var obj={};
obj[0] = "1";
obj[1] = "2";
obj[2] = "3"; .length = 3;


푸시, 팝, 시프트, 조인 등과 같은 일부 배열 방법이 없습니다. 때로는 이러한 의사 배열을 실제 배열로 변환해야 푸시, 팝 및 기타 방법을 사용할 수 있습니다. 다음은 도구 함수 makeArray


var makeArray = function(obj) {
return Array.prototype.slice.call(obj,0);
}
try{
Array.prototype.slice.call(document.documentElement.childNodes, 0 )[0].nodeType;
}catch(e){
makeArray = function(obj){
var res = []
for(var i=0,len=obj.length ; ires.push(obj[i]);
}
return res
}
위 세 개의 의사 배열



코드 복사
코드는 다음과 같습니다. //fun 함수 정의 내부적으로 makeArray를 사용하면 인수가 배열로 변환됩니다. function fun(){ var ary = makeArray(arguments)
alert(ary.constructor )
//
fun(3 ,5); 호출


//페이지에 여러 단락 요소 p가 있다고 가정합니다.
var els = document.getElementsByTagName("p"); var ary1 = makeArray(els);
alert(ary1.constructor);


//특수 js 객체(예: jquery 객체)
var obj={}; obj[0] = "1" ;
obj[1] = "2";
obj[2] = "3"
obj.length = 3; = makeArray(obj);
alert(ary2.constructor)

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿