博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js的数组和对象的多种"复制"和"清空", 以及区分JS数组和对象的方法
阅读量:6715 次
发布时间:2019-06-25

本文共 1466 字,大约阅读时间需要 4 分钟。

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]'  //trueObject.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//trueobj.constructor === Object //true

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

obj instaceof Object  //truearray instaceof Object// true

4.isArray方法

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

以上是我认为无懈可击的方法, 其他还有很多, 需要请留言

想了解原生js的"数组"和"对象"的方法, 请点击

转载地址:http://yaelo.baihongyu.com/

你可能感兴趣的文章
POJ 2728 二分+最小生成树
查看>>
[LeetCode] Best Time to Buy and Sell Stock IV
查看>>
nuxt 2.0采坑计之 (引入静态文件css)
查看>>
I/O编程软件题(Java语言)
查看>>
时序逻辑、组合逻辑,我不再怕你了
查看>>
(三)mybatis之对Hibernate初了解
查看>>
git 分支( branch ) 的基本使用
查看>>
HDU 4334 Trouble
查看>>
nginx安装与配置
查看>>
Android 命令设置获取、IP地址、网关、dns
查看>>
弹性碰撞 poj 3684
查看>>
查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by...
查看>>
[SQL in Azure] Windows Azure Virtual Machine Readiness and Capacity Assessment
查看>>
关于CCR测评器的自定义校验器(Special Judge)
查看>>
java设计模式之 装饰器模式
查看>>
loadrunner-3-18Service-Level Agreement(服务水平协议)
查看>>
Python编程-基础知识-列表和元组
查看>>
利息力(force of interest)
查看>>
Oracle 角色及其权限
查看>>
NiftyDialogEffects:集成了多种动画效果的Dialog控件
查看>>