`

类数组转换为数组makeArray()

 
阅读更多
     面试的时候遇到这个问题,在jquery中如何实现的将argements或者getElementsByTagName这种类数组转换为真正的数组

     查了API,jQuery.makeArray( obj ) 转换后,任何有特殊功能的对象将不再存在,而变成是一个普通的数组对象。
var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
//这样domNodes就可以应用Array下的所有方法了


makeArray: function( a ) {
		var r = [];

		// Need to use typeof to fight Safari childNodes crashes
		if ( typeof a != "array" )
			for ( var i = 0, al = a.length; i < al; i++ )
				r.push( a[i] );
		else
			r = a.slice( 0 );

		return r;
	}


makeArray: function( arr, results ) {
		var ret = results || [];
		if ( arr != null ) {
			if ( isArraylike( Object(arr) ) ) {
				jQuery.merge( ret,
					typeof arr === "string" ?
					[ arr ] : arr
				);
			} else {
				core_push.call( ret, arr );
			}
		}

		return ret;
	}


  <div>First</div>
  <div>Second</div>
  <div>Third</div> 
  <div>Fourth</div>
<script>
    var elems = document.getElementsByTagName("div"); // returns a nodeList
    var arr = jQuery.makeArray(elems);
    arr.reverse(); //此时arr为转换后的数组,可以正常使用数组的反转方法
    $(arr).appendTo(document.body);
</script>
分享到:
评论

相关推荐

    js将类数组对象转换成数组对象

    在标准浏览器中,可以使用Array.prototype.slice.call()方法将类数组对象转换为数组。这个方法通过调用Array的slice方法并传递类数组对象作为上下文,可以得到一个包含所有类数组对象元素的新数组。IE浏览器对这个...

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

    // 弹出Array,表明已经转换为数组 } fun(3, 5); // 调用函数 ``` #### 示例2:HTMLCollection转换 ```javascript // 假设页面上有多个段落元素 var els = document.getElementsByTagName("p"); var ary1 = make...

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

    在ES6之前,将伪数组转换为数组通常采用两种方法: 1. 遍历方法:通过循环将伪数组的每个元素添加到新数组中。 ```javascript function makeArray(arrayLike) { let result = []; for (let i = 0, len = ...

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

    总的来说,将HTMLCollection、NodeList和其他伪数组转换为数组是JavaScript中常见的操作,它能让我们充分利用数组的方法进行更灵活的数据处理。通过`makeArray`函数,我们可以确保这些对象能够适应各种需要数组功能...

    JavaScript 数据元素集合与数组的区别说明

    在给出的例子中,定义了一个makeArray()函数,该函数可以通过不同的方式将HTMLCollection对象转换为数组对象,便于后续操作。 总结一下元素集合(HTMLCollection)与数组的区别: 1. HTMLCollection是类数组对象,...

    jQuery数组处理方法汇总

    以下是如何使用 `$.makeArray` 将此类对象转换为数组: ```javascript var divs = document.getElementsByTagName('div'); divs = $.makeArray(divs); ``` 总结,jQuery 提供了多种方便的数组处理方法,如 `$....

    Jquery 数组操作大全个人总结

    总结起来,jQuery提供了一系列强大且便捷的数组操作方法,包括$.each()进行遍历,$.grep()进行过滤,$.map()进行转换,$.inArray()检查元素存在,$.merge()合并数组,$.makeArray()转换对象为数组,以及$.proxy()...

    jQuery数组处理代码详解(含实例演示)

    #### 八、$.makeArray() 类数组对象转换为数组(不常用) `$.makeArray` 方法可以将类数组对象转换为真正的数组。这对于处理DOM元素等类数组对象非常有用。 ```javascript var _makeArr = $.makeArray(h2obj); ...

    sqlserver转PG经验总结及PG的一些特性

    - `string_to_array` 函数可以将字符串转换为数组 - `array_to_string` 函数可以将数组转换为字符串,并且支持指定分隔符 示例代码: ```sql -- 将字符串转换为数组 SELECT string_to_array('df,asd,fa', ','); -...

    jQuery1.6 使用方法二

    // 转换为数组 ``` #### 二、`inArray` 方法 **功能描述:** `inArray` 方法用于搜索数组中指定的值,并返回该值的索引位置。如果未找到该值,则返回 `-1`。 **实现逻辑:** 1. **兼容性处理**: - 如果当前...

    jQuery常用数据处理方法小结

    - **$.makeArray()**: 此方法可以将类数组对象转换成真正的数组对象,使得转换后的数组可以使用原生数组的方法。例如: ```javascript var list = document.getElementsByTagName('li'); var arr = $.makeArray...

    JS实现隔行换色的表格排序

    在提供的代码片段中,`utils.js`可能包含了这些功能的实现,例如`getByClass`函数用于兼容不同浏览器的类名选择,`jsonParse`用于解析JSON字符串,`makeArray`用于转换非数组对象为数组,以及可能存在的`sortTable`...

    jdk1.8_api:jdk1.8 api源码阅读记录

    `toArray()`方法则是`AbstractCollection`中的一个重要成员,它允许我们将集合转换为数组,方便我们进行各种操作。 `toArray()`方法有两种重载形式: 1. `T[] toArray();` 2. `T[] toArray(T[] a);` 第一个方法...

    php专高一笔记.docx

    - **对象转数组**:使用`toArray()`方法将对象转换为数组。 - **分页样式更改**:可以在`Thinkphp\library\think\paginator\driver`目录下自定义分页样式。 - **添加数据**:使用`create`方法添加数据,如果第二个...

    jQuery中大家不太了解的几个方法

    例如,如果你有一个NodeList(如通过`document.getElementsByTagName`得到的),你可以使用`$.makeArray`将其转换为数组,然后调用`reverse()`等方法。这样可以确保在所有情况下都能一致地处理数据。 总的来说,...

Global site tag (gtag.js) - Google Analytics