`

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编程中,伪数组(或称为类数组)是一个常见的概念,它和真正的数组有很多相似之处,但却不具备数组的一些属性和方法,比如不具备数组的push、pop、shift、unshift等方法,也不能直接调用数组的toString...

    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

    ### JavaScript中将HTMLCollection、NodeList及伪数组转换为真数组的方法 在JavaScript开发过程中,经常需要处理DOM操作,这通常涉及到对`HTMLCollection`、`NodeList`以及所谓的“伪数组”进行操作。这些对象虽然...

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

    在JavaScript中,我们经常会遇到需要将HTMLCollection、NodeList或者伪数组(也就是通常所说的类数组对象)转换成真正的数组的情况。类数组对象并不是真正的数组类型,它们通常是函数的参数对象(比如arguments对象...

    将HTMLCollection/NodeList/伪数组转换成数组的实现方法

    在JavaScript中,HTMLCollection、NodeList以及某些情况下创建的类似数组的对象被称为伪数组。它们具有类似于数组的特性,比如拥有`length`属性和通过索引访问元素的能力,但不具备数组的完整方法集,如`push`、`pop...

    js基础数组笔记.docx

    在JavaScript中,`arguments`就是一个典型的伪数组,它存在于函数内部,用于存储传递给函数的所有参数。 - **特点**: - 具有`length`属性。 - 按索引方式存储数据。 - 不支持数组的`push`, `pop`等方法。 - **...

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

    JavaScript中的类数组对象,也称为伪数组,是与标准数组类似但不完全符合数组特性的对象。它们在结构上相似,具有`length`属性,可以使用`for`循环进行遍历,但不拥有数组的内置方法,比如`push`, `slice`, `concat`...

    对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)

    在JavaScript编程中,有时我们需要将非数组对象转换为类似数组的对象(ArrayLike)。这是因为某些函数或方法,如`Array.prototype.slice()`或`Array.prototype.splice()`,需要类似数组的对象作为参数才能正常工作。...

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

    伪数组通常指那些拥有数组的外观,但实际上并不完全符合数组定义的对象。例如,函数的arguments对象就是一种伪数组。尽管它可以通过索引访问元素,但它并不具备数组的所有方法。例如,我们无法改变它的长度属性,这...

    json转js数组-分页-动态生成html-样式引入

    假设我们有`jsArray`,可以使用以下伪代码实现简单的分页: ```javascript function paginate(array, pageSize) { var totalPages = Math.ceil(array.length / pageSize); return function(pageNumber) { return ...

    Javascript Dom元素获取和添加详解

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

    JavaScript 批量创建数组的方法

    在这种情况下,我们使用一个长度为100000的伪数组(如`{ length: 100000 }`)并传递给`Array`构造函数。这创建了一个新的数组,然后通过`map`进行值的赋值。尽管这种方法比`join`和`split`更快,但直接使用`Array...

    JS随即打乱数组实现代码

    JavaScript实现数组打乱功能的知识点可以分为以下几个部分: 1. **创建数组** - 通常情况下,创建数组推荐使用`var arr = [];`的形式,而不是`var arr = new Array();`。这是因为前者是数组字面量的方式,更加简洁...

    理解Javascript函数形式参数与arguments

    arguments还有一些其他的特性,例如它可以作为一个伪数组来使用。这些特性将在《伪数组》一文中进行详细的解释。 理解函数形式参数和arguments之间的关系对于编写高效的JavaScript代码至关重要。只有通过深入理解...

Global site tag (gtag.js) - Google Analytics