这里把符合以下条件的对象称为伪数组:
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编程中,伪数组(或称为类数组)是一个常见的概念,它和真正的数组有很多相似之处,但却不具备数组的一些属性和方法,比如不具备数组的push、pop、shift、unshift等方法,也不能直接调用数组的toString...
这篇文章来回答javascript通用循环遍历方法forEach中最后提到的关于伪数组的问题。 什么是伪数组 能通过Array.prototype.slice转换为真正的数组的带有length属性的对象。 这种对象有很多,比较特别的是arguments对象...
1、类似数组的对象,可以理解为“伪数组” 2、可遍历对象(比如字符串) 什么是伪数组? 伪数组都有一个基本的特点:必须有 length 属性。 let arrayLike = { "0": "a", "1": "b", "2": "c", "length": 3 } ...
### JavaScript中将HTMLCollection、NodeList及伪数组转换为真数组的方法 在JavaScript开发过程中,经常需要处理DOM操作,这通常涉及到对`HTMLCollection`、`NodeList`以及所谓的“伪数组”进行操作。这些对象虽然...
在JavaScript中,我们经常会遇到需要将HTMLCollection、NodeList或者伪数组(也就是通常所说的类数组对象)转换成真正的数组的情况。类数组对象并不是真正的数组类型,它们通常是函数的参数对象(比如arguments对象...
在JavaScript中,HTMLCollection、NodeList以及某些情况下创建的类似数组的对象被称为伪数组。它们具有类似于数组的特性,比如拥有`length`属性和通过索引访问元素的能力,但不具备数组的完整方法集,如`push`、`pop...
在JavaScript中,`arguments`就是一个典型的伪数组,它存在于函数内部,用于存储传递给函数的所有参数。 - **特点**: - 具有`length`属性。 - 按索引方式存储数据。 - 不支持数组的`push`, `pop`等方法。 - **...
JavaScript中的类数组对象,也称为伪数组,是与标准数组类似但不完全符合数组特性的对象。它们在结构上相似,具有`length`属性,可以使用`for`循环进行遍历,但不拥有数组的内置方法,比如`push`, `slice`, `concat`...
在JavaScript编程中,有时我们需要将非数组对象转换为类似数组的对象(ArrayLike)。这是因为某些函数或方法,如`Array.prototype.slice()`或`Array.prototype.splice()`,需要类似数组的对象作为参数才能正常工作。...
伪数组通常指那些拥有数组的外观,但实际上并不完全符合数组定义的对象。例如,函数的arguments对象就是一种伪数组。尽管它可以通过索引访问元素,但它并不具备数组的所有方法。例如,我们无法改变它的长度属性,这...
假设我们有`jsArray`,可以使用以下伪代码实现简单的分页: ```javascript function paginate(array, pageSize) { var totalPages = Math.ceil(array.length / pageSize); return function(pageNumber) { return ...
document.getElementsByClassName():通过class名字获取一个或多个Dom元素(伪数组) document.getElementsByTagName():通过标签名字获取一个或多个Dom元素(伪数组) document.querySelector():获取指定 CSS ...
在这种情况下,我们使用一个长度为100000的伪数组(如`{ length: 100000 }`)并传递给`Array`构造函数。这创建了一个新的数组,然后通过`map`进行值的赋值。尽管这种方法比`join`和`split`更快,但直接使用`Array...
JavaScript实现数组打乱功能的知识点可以分为以下几个部分: 1. **创建数组** - 通常情况下,创建数组推荐使用`var arr = [];`的形式,而不是`var arr = new Array();`。这是因为前者是数组字面量的方式,更加简洁...
arguments还有一些其他的特性,例如它可以作为一个伪数组来使用。这些特性将在《伪数组》一文中进行详细的解释。 理解函数形式参数和arguments之间的关系对于编写高效的JavaScript代码至关重要。只有通过深入理解...