将伪数组转换成数组

这里把符合以下条件的对象称为伪数组:

1,具有length属性

2,按索引方式存储数据

3,不具有数组的push,pop等方法

1,function内的arguments 。

2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children等方式获取的集合(HTMLCollection,NodeList)等。

3,特殊写法的对象 ,如

Js代码  

  1. var obj={};  
    obj[0] = "一";  
    obj[1] = "二";  
    obj[2] = "三";  
    obj.length = 3;

它们不具有数组的一些方法如push, pop, shift, join等。有时候需要将这些伪数组转成真正的数组,这样可以使用push, pop等方法。以下是工具函数makeArray

Js代码  

  1. 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;    
    }

以下分别测试以上三种伪数组:

Js代码  

  1. //定义一个函数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);
时间: 2024-10-13 02:13:26

将伪数组转换成数组的相关文章

求平均数-----类数组转换成数组

求平均数的代码function avgFn() { 首先把arguments转化为数组 var ary = []; for (var i = 0; i < arguments.length; i++) { ary.push(arguments[i]); ary[ary.length] = arguments[i]; } 数组排序 ary.sort(function (a, b) { return a - b; }); 掐头去尾 ary.unshift(); ary.pop(); 求和求平均值,小

如何在AJAX的毁掉函数中传递JSON数据?如何在控制器中接受并转换成数组?

首先,我们经过测试(或者你平时的开发经验)知道,在AJAX的回调函数中使用get或者post方式可以传递字符串(不信可以自己去写实例测试,不过要注意:get方式有数据量的限制): 方法一:我们将ajax的请求放回的JSON数组转换成字符串,然后在回调函数中get过去: a.html页面的AJAX请求代码: b.后台两个处理函数(尤其注意第二个是回调函数指向的处理函数): 方法二:我们在回调函数中直接处理发送一个新的AJAX请求(也可以写成匿名函数),将ajax请回来的JSON数组转化为字符串作为

LeetCode OJ:Convert Sorted Array to Binary Search Tree(将排序好的数组转换成二叉搜索树)

Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 讲一个排序好的数组转换成二叉搜索树,这题没想出来,基本上是参考别人的,边界条件应该注意一下: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * T

zend framework获取数据库中枚举类enum的数据并将其转换成数组

在model中建立这样的模型,在其中写入获取枚举类的方法 class Student extends Zend_Db_Table{ protected $_name ='student'; protected $_primary ='id'; function getPartyEnum($enumname){ //适配器并获取数据 $db = $this->getAdapter(); $db->query("SET NAMES GBK"); $sql = $db->q

数组转换成集合

package com.loaderman.jdk5; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Demo4_AsList { /** * 数组转换成集合 * 数组转换成集合虽然不能增加或减少元素,但是可以用集合的思想操作数组,也就是说可以使用其他集合中的方法 */ public static void main(String[] args) { //demo1

【考点】如何将一个Collection转换成数组?

解析:集合和数组有很多共同的地方,二者都是作为数据容器使用, 用来持有数据.数组的长度是固定的,集合的长度却可以动态扩展,数组由于可以直接通过索引操作其元素,所以性能和效率较高.实际应用中,可能使用及合作为临时变量持有数据,却将处理结果转换成数组返回. 参考答案:Collection接口中定义了toArray(T[] a)方法来将集合转换为数组,其中T是泛型类型.

java的byte数组转换成在[0,255]范围内

C#的byte    是 0-255java的byte  是 -128-127  java的byte数组转换成在[0,255]范围内int data[]= new int[bytes.length];for(int i=0;i<bytes.length;i++) { data[i] = bytes[i] & 0xff;}

【第3篇】通过JSON-Lib把数组转换成Json数据

package ivyy.taobao.com.domain.jsonlib; import ivyy.taobao.com.entity.Address; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** *@DEMO:j

数组冒泡排序,文件读取,数据库读取,string类型的int数组转换成int数组

排序方式(枚举) 1 public enum SortBy 2 { 3 Asc, 4 Desc 5 } 数组冒泡排序方法 1 public class SortEntity 2 { 3 public static int[] SortArray(int[] array,SortBy sortby) 4 { 5 int flag; 6 switch (sortby) 7 { 8 case SortBy.Asc: 9 for (int i = 0; i < array.Length - 1; i++