>  기사  >  웹 프론트엔드  >  js_javascript 기술에서 HTMLCollection/NodeList/pseudo 배열을 배열로 변환하는 코드

js_javascript 기술에서 HTMLCollection/NodeList/pseudo 배열을 배열로 변환하는 코드

WBOY
WBOY원래의
2016-05-16 18:04:171798검색

여기서 다음 조건을 충족하는 객체를 의사 배열
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[ 1] = "이";
obj[2] = "셋";
obj.length = 3;
var ary2 = makeArray(obj);
경고(ary2.constructor);
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.