资讯专栏INFORMATION COLUMN

js的数组和对象的多种"复制"和"清空", 以及区分JS数组

DTeam / 3163人阅读

摘要:方法方法弊端区分不开对象或者数组方法以上是我认为无懈可击的方法其他还有很多需要请留言想了解原生的数组和对象的方法请点击教程阮一峰

js的数组和对象的多种"复制"和"清空", 以及区分JS数组和对象的方法 一.数组清空与复制方法

1.数组清空的方法

var a = [1,2,3];    
a.length = 0;           //方法1 
a.splice(0, a.length);  //方法2

2.数组复制方法

var a = [1,2,3];
a.slice(0)
二.对象清空与复制方法

1.判断对象是否为空

Object.key.length==0  //为空  ES6

2.对象复制

(1).万能办法

function clone(obj){
    let temp = null;
    if(obj instanceof Array){
        temp = obj.concat();
    }else if(obj instanceof Function){
        //函数是共享的是无所谓的,js也没有什么办法可以在定义后再修改函数内容
        temp = obj;
    }else{
        temp = new Object();
        for(let item in obj){
            let val = obj[item];
            temp[item] = typeof val == "object"?clone(val):val; //这里也没有判断是否为函数,因为对于函数,我们将它和一般值一样处理
        }
    }
    return temp;
}

(2).JSON对象序列化方法, 弊端: 不能复制函数

JSON.parse(JSON.stringify(obj))
三.判断是否为数组和对象的方法

1.toString方法

Object.prototype.toString.call(array) === "[object Array]"  //true
Object.prototype.toString.call(obj) === "[Object Object]"  //true

数值:返回[object Number]。 
字符串:返回[object String]。 
布尔值:返回[object Boolean]。
undefined:返回[object Undefined]。 
null:返回[object Null]。 
数组:返回[object Array]。 
arguments 对象:返回[object Arguments]。 
函数:返回[object Function]。
Error 对象:返回[object Error]。 
Date 对象:返回[object Date]。 
RegExp 对象:返回[object RegExp]。 
其他对象:返回[object Object]。

2.constructor方法

obj.constructor === Array//true
obj.constructor === Object //true

3.instanceof方法, 弊端: 区分不开对象或者数组

obj instaceof Object  //true
array instaceof Object// true

4.isArray方法

Array.isArray([1,2,3])  //true

以上是我认为无懈可击的方法, 其他还有很多, 需要请留言
想了解原生js的"数组"和"对象"的方法, 请点击 JavaScript教程-阮一峰

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102113.html

相关文章

  • 详细解说JavaScript内存管理GC算法

      JavaScript在创建变量(数组、字符串、对象等)是自动进行了分配内存,而且当它没有被使用的状态下,会自动的释放分配的内容;其实这样基层语言,如C语言,他们提供了内存管理的接口,比如malloc()用于分配所需的内存空间、free()释放之前所分配的内存空间。  释放内存的过程称为垃圾回收,例如avaScript这类高级语言可以提供了内存自动分配和自动回收,其实这个自动储存不会占用太多空间...

    3403771864 评论0 收藏0
  •  用js实现点击切换自动播放轮播图示例

      js实现点击切换和自动播放的轮播图,其实十分简单,话不多说,我们直接看示例:  轮播图案例  <!DOCTYPEhtml>   <html>   <head>   <metacharset="UTF-8">   <metaname="vie...

    3403771864 评论0 收藏0
  • 前端开发——让算法"动"起来

    摘要:函数和我们之前介绍的冒泡排序是一样的,只不过这里有一句这句是核心,一看是乍看是不是很奇怪,为什么要然后再。而且细心的会发现之前我们看到的冒泡排序它只有一层循环。 正文 当然在我们不清楚具体操作细节前我们可以先假设一下,我们能够用什么来实现。按照以前看过的排序动画我将其分为 1.Js操作Dom,再搭配简单的css 2.Canvas动画 之后在查资料的时候发现还有人用d3这个库来完成。...

    233jl 评论0 收藏0
  • 前端开发——让算法"动"起来

    摘要:函数和我们之前介绍的冒泡排序是一样的,只不过这里有一句这句是核心,一看是乍看是不是很奇怪,为什么要然后再。而且细心的会发现之前我们看到的冒泡排序它只有一层循环。 正文 当然在我们不清楚具体操作细节前我们可以先假设一下,我们能够用什么来实现。按照以前看过的排序动画我将其分为 1.Js操作Dom,再搭配简单的css 2.Canvas动画 之后在查资料的时候发现还有人用d3这个库来完成。...

    Tangpj 评论0 收藏0

发表评论

0条评论

DTeam

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<