将伪数组转为真正的数组

将伪数组转为真正的数组

2018.08.14 21:06:53字数 90阅读 2321

伪数组转为真数组

对DOM元素进行map、forEach操作时候需要进行遍历,伪数组遍历会报错:‘elem.map is not a function‘,为了避免这个问题,需要进行转换。

(1) ES5 转为真数组

Array.prototype.slice.call(元素对象)

let elem1 = Array.prototype.slice.call(elem)
(2) ES6 转为真数组

Array.from(元素对象)

let elem2 = Array.from(elem)
(3) 例子
<ul>
    <li class="a" ></li>
    <li class="a" ></li>
    <li class="a" ></li>
    <li class="a" ></li>
    <li class="a" ></li>
</ul>

<script>

/* 获取li元素*/
let elem = document.getElementsByClassName(‘a‘)

/* 这样写是错误的,因为是伪数组*/
elem.map((item,index,elem) => {
    console.log(item +‘---‘+index + ‘----‘+elem)
    /*elem.map is not a function*/
})

// (1)es6 转为真数组
let elem1 = Array.from(elem)
// (2)es5 转为真数组
let elem2 = Array.prototype.slice.call(elem)

console.log(elem)
console.log(typeof elem)
console.log(elem1)
console.log(elem2)

elem1.map((item,index,elem1) => {
    console.log(item +‘---‘+index + ‘----‘+elem1)
})
elem2.map((item,index,elem2) => {
    console.log(item +‘---‘+index + ‘----‘+elem2)
})

</script>

原文地址:https://www.cnblogs.com/li923/p/11724038.html

时间: 2024-08-30 17:17:48

将伪数组转为真正的数组的相关文章

伪数组怎么转为真正的数组呢~

在用js获取元素对象的时候,很多时候需要进行将伪数组转为真正的数组的,那么如何用呢~~~ 废话少说,直接上代码~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name=&qu

将二维数组转为一维数组的2种方法

如何将下面的二维数组转为一维数组. 代码如下: $msg = array( array( 'id'=>'45', 'name'=>'jack' ), array( 'id'=>'34', 'name'=>'mary' ), array( 'id'=>'78', 'name'=>'lili' ), ); 第一种方法: 代码如下: foreach($msg as $k => $v){ $ids[] = $id; $names[] = $name; } 第二种方法: 代

观V8源码中的array.js,解析 Array.prototype.slice为什么能将类数组对象转为真正的数组?

在官方的解释中,如[mdn] The slice() method returns a shallow copy of a portion of an array into a new array object. 简单的说就是根据参数,返回数组的一部分的copy.所以了解其内部实现才能确定它是如何工作的.所以查看V8源码中的Array.js     可以看到如下的代码: 一.方法  ArraySlice,源码地址,直接添加到Array.prototype上的"入口",内部经过参数.类型

java中的lis数组转为json数据

第一个想到的办法就是 javascript中的replace 也就是先将list数组转为 字符串再对 字符串  replace 但是万万没想到javascript的replace函数在替换数据时, 默认只替换第一个所以在替换的时候加上: / 替换内容 /g 就能实现全部替换

[LeetCode] Convert Sorted Array to Binary Search Tree 将有序数组转为二叉搜索树

Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 这道题是要将有序数组转为二叉搜索树,所谓二叉搜索树,是一种始终满足左<根<右的特性,如果将二叉搜索树按中序遍历的话,得到的就是一个有序数组了.那么反过来,我们可以得知,根节点应该是有序数组的中间点,从中间点分开为左右两个有序数组,在分别找出其中间点作为原中间点的左右两个子节点,这不就是是二分查找法的核

XML在java或.NET中转为Json的数组或对象数据时的处理

XML在java和.NET中转为Json数据时会出现这样一个问题,当节点中只有一个节点数据时是转换为对象,有多个节点则是转为数组,为了应对这个问题我们需要在解析的时候进行如下的处理,不然就会报异常: 数据1:数组格式 "Field": [                    {                        "@name": "APPROVE",                        "@title"

在Javascript中什么是伪数组?如何将伪数组转化成标准数组?

在js中,数组是特殊的对象,凡是对象有的性质,数组都有,数组表示有序数据的集合,而对象表示无序数据的集合. 那伪数组是什么呢,当然它也是对象,伪数组一般具有以下特点: 按索引方式存储数据: 具有length属性: 没有数组的push.shift.pop等方法; function的arguments对象,还有getElementsByTagName.ele.childNodes等返回的NodeList对象,或者自定义的某些对象,这些都可以是伪数组. 我们可以通过以下几种方式将伪数组转换为标准数组:

js List&lt;Map&gt; 将偏平化的数组转为树状结构并排序

数据格式: [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":"6d460008-38f7-479d-b6d1-058ebc17dae3","myorder":1, "name":"任务一" }, { "id":"6d460008-38f7-479d-b6d1-058e

利用递归把多维数组转为一维数组的函数

函数名称:array_multi2single 函数原形:array array_multi2single(array) 实现功能:把一个多维数组的数值存放到一维数组中,不保存Key. < ?php function array_multi2single($array) {     static $result_array=array();     foreach($array as $value)     {         if(is_array($value))         {