`

Js伪数组

阅读更多
这里把符合以下条件的对象称为伪数组:
1,具有length属性
2,按索引方式存储数据
3,不具有数组的push,pop等方法

1,function内的arguments 。
2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children 等方式

获取的集合(HTMLCollection,NodeList)等。

代码:
var obj={};  
obj[0] = "一";  
obj[1] = "二";  
obj[2] = "三"; 
obj.length = 3;
它们不具有数组的一些方法如push, pop, shift, join等。有时候需要将这些伪数组转成真正的数组,这样可以使用push, pop等方法。以下是工具函数makeArray
function makeArray(obj){  
    var rs=[],len=obj.length;  
    try{  
        rs = [].slice.call(obj,0);  
    }catch(e){//for IE  
        for(var i=0;j=obj[i++];){  
            rs.push(j);  
        }                     
    }  
    return rs;    
}
以下分别测试以上三种伪数组:
//定义一个函数fun,内部使用makeArray将其arguments转换成数组  
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] = "一";  
obj[1] = "二";  
obj[2] = "三";  
obj.length = 3;   
 
var ary2 = makeArray(obj);  
alert(ary2.constructor); 
分享到:
评论

相关推荐

    JavaScript伪数组用法实例分析

    主要介绍了JavaScript伪数组用法,结合实例形式分析了伪数组的概念、功能、定义及简单使用方法,需要的朋友可以参考下

    javascript 伪数组实现方法

    这篇文章来回答javascript通用循环遍历方法forEach中最后提到的关于伪数组的问题。 什么是伪数组 能通过Array.prototype.slice转换为真正的数组的带有length属性的对象。 这种对象有很多,比较特别的是arguments对象...

    JS Array.from()将伪数组转换成数组的方法示例

    1、类似数组的对象,可以理解为“伪数组” 2、可遍历对象(比如字符串) 什么是伪数组? 伪数组都有一个基本的特点:必须有 length 属性。 let arrayLike = { "0": "a", "1": "b", "2": "c", "length": 3 } ...

    js中将HTMLCollection NodeList 伪数组转换成数组的代码.docx

    js中将HTMLCollection NodeList 伪数组转换成数组的代码.docx

    js中将HTMLCollection/NodeList/伪数组转换成数组的代码

    js中将HTMLCollection/NodeList/伪数组转换成数组的代码,需要的朋友可以参考下。

    【JavaScript源代码】javascript类数组的深入理解.docx

     js数组,相比大家都很熟悉,因为走到哪都要用,但它有个“双胞胎弟弟” ,叫类数组(也叫伪数组),可能有的人了解,有的人不了解,今天我们来看一看。 顾名思义,这玩意儿肯定是个长得像数组,但又不算数组的...

    Javascript Dom元素获取和添加详解

    document.getElementsByClassName():通过class名字获取一个或多个Dom元素(伪数组) document.getElementsByTagName():通过标签名字获取一个或多个Dom元素(伪数组) document.querySelector():获取指定 CSS ...

    【JavaScript源代码】JavaScript实现换肤效果(换背景).docx

    2、获取一组图片元素对象(得到伪数组) 3、for循环给图片绑定点击事件- - -onclick,事件处理程序中设置body元素对象的背景图片为- - -当前被点击的图片的路径 4、注意:body元素对象的获取为- - -document.body,...

    Javascript之高级数组API的使用实例

    例一:伪数组,不能修改长短的数组(所以没办法清零),可以修改元素,代码实现如下: [removed] fn(1,2); fn(1,2,3,4,5,6); fn(1,2,4,5,7,9,4); function fn(a,b){ arguments[0]=0; console.log(arguments); ...

    自学jQuery必看的常用静态方法大全

    文章目录jQuery对象静态方法和实例方法jQuery的each方法与原生JS的forEach()...jQuery对象是一个伪数组 什么是伪数组:有数组的属性,即 0–(length-1) 的属性并且有 length 属性 div1 div2 div3 $(function(){ va

    JavaScript常用脚本汇总(二)

    把JavaScript中的伪数组转换为真数组 在 JavaScript 中, 函数中的隐藏变量 arguments 和用 getElementsByTagName 获得的元素集合(NodeList)都不是真正的数组,不能使用 push 等方法,在有这种需要的时候只能先...

    JQuery中$.each 和$(selector).each()的区别详解

    数组和含有一个length属性的伪数组对象 (伪数组对象如function的arguments对象)以数字索引进行遍历,从0到length-1, 其它的对象通过的属性进行遍历. $.each()与$(selector).each()不同, 后者专用于jquery对象的遍历,...

    移动端web某马机构前端内部面试题,es,js

    真数组和伪数组的区别?数组如何进行降维(扁平化)?怎么理解mvvm这种设计模式?v-if和v-show的区别,使用场景区别、组件中的data为什么是函数,new Vue 实例里,data 可以直接是一个对象computed和watch的区别是...

    study_snabbdom:自己动手写,200行代码领略virtual DOM技术的风骚,一窥diff算法的思想

    环境信息版本为 webpack@5主要的功能模块和思路 h函数 => 虚拟节点相关DOM知识`把DOM就看作是学习CSS那样。... document.getElementsByClassName(className:string) @return: 元素对象集合的伪数组 HTMLCollection (4).

    05-大事件和node阶段某马机构前端内部面试题.md

    真数组和伪数组的区别?数组如何进行降维(扁平化)?怎么理解mvvm这种设计模式?v-if和v-show的区别,使用场景区别、组件中的data为什么是函数,new Vue 实例里,data 可以直接是一个对象computed和watch的区别是...

    javascript forEach通用循环遍历方法

    //数组与伪数组的遍历 var _Array_forEach = function (array, block, context) { if (array == null) return; //对String进行特殊处理 if(typeof array == 'string'){ array = array.split('');

Global site tag (gtag.js) - Google Analytics