面试的时候遇到这个问题,在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>
分享到:
相关推荐
在标准浏览器中,可以使用Array.prototype.slice.call()方法将类数组对象转换为数组。这个方法通过调用Array的slice方法并传递类数组对象作为上下文,可以得到一个包含所有类数组对象元素的新数组。IE浏览器对这个...
// 弹出Array,表明已经转换为数组 } fun(3, 5); // 调用函数 ``` #### 示例2:HTMLCollection转换 ```javascript // 假设页面上有多个段落元素 var els = document.getElementsByTagName("p"); var ary1 = make...
在ES6之前,将伪数组转换为数组通常采用两种方法: 1. 遍历方法:通过循环将伪数组的每个元素添加到新数组中。 ```javascript function makeArray(arrayLike) { let result = []; for (let i = 0, len = ...
总的来说,将HTMLCollection、NodeList和其他伪数组转换为数组是JavaScript中常见的操作,它能让我们充分利用数组的方法进行更灵活的数据处理。通过`makeArray`函数,我们可以确保这些对象能够适应各种需要数组功能...
在给出的例子中,定义了一个makeArray()函数,该函数可以通过不同的方式将HTMLCollection对象转换为数组对象,便于后续操作。 总结一下元素集合(HTMLCollection)与数组的区别: 1. HTMLCollection是类数组对象,...
以下是如何使用 `$.makeArray` 将此类对象转换为数组: ```javascript var divs = document.getElementsByTagName('div'); divs = $.makeArray(divs); ``` 总结,jQuery 提供了多种方便的数组处理方法,如 `$....
总结起来,jQuery提供了一系列强大且便捷的数组操作方法,包括$.each()进行遍历,$.grep()进行过滤,$.map()进行转换,$.inArray()检查元素存在,$.merge()合并数组,$.makeArray()转换对象为数组,以及$.proxy()...
#### 八、$.makeArray() 类数组对象转换为数组(不常用) `$.makeArray` 方法可以将类数组对象转换为真正的数组。这对于处理DOM元素等类数组对象非常有用。 ```javascript var _makeArr = $.makeArray(h2obj); ...
- `string_to_array` 函数可以将字符串转换为数组 - `array_to_string` 函数可以将数组转换为字符串,并且支持指定分隔符 示例代码: ```sql -- 将字符串转换为数组 SELECT string_to_array('df,asd,fa', ','); -...
// 转换为数组 ``` #### 二、`inArray` 方法 **功能描述:** `inArray` 方法用于搜索数组中指定的值,并返回该值的索引位置。如果未找到该值,则返回 `-1`。 **实现逻辑:** 1. **兼容性处理**: - 如果当前...
- **$.makeArray()**: 此方法可以将类数组对象转换成真正的数组对象,使得转换后的数组可以使用原生数组的方法。例如: ```javascript var list = document.getElementsByTagName('li'); var arr = $.makeArray...
在提供的代码片段中,`utils.js`可能包含了这些功能的实现,例如`getByClass`函数用于兼容不同浏览器的类名选择,`jsonParse`用于解析JSON字符串,`makeArray`用于转换非数组对象为数组,以及可能存在的`sortTable`...
`toArray()`方法则是`AbstractCollection`中的一个重要成员,它允许我们将集合转换为数组,方便我们进行各种操作。 `toArray()`方法有两种重载形式: 1. `T[] toArray();` 2. `T[] toArray(T[] a);` 第一个方法...
- **对象转数组**:使用`toArray()`方法将对象转换为数组。 - **分页样式更改**:可以在`Thinkphp\library\think\paginator\driver`目录下自定义分页样式。 - **添加数据**:使用`create`方法添加数据,如果第二个...
例如,如果你有一个NodeList(如通过`document.getElementsByTagName`得到的),你可以使用`$.makeArray`将其转换为数组,然后调用`reverse()`等方法。这样可以确保在所有情况下都能一致地处理数据。 总的来说,...