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教程-阮一峰

js的数组和对象的多种复制和清空, 以及区分JS数组和对象的方法相关推荐

  1. PHP 数组变量之写时复制的要点 只有数组才有的概念。

    1.如果数组指针位置非法,复制时,会将新数组指针初始化! 2.值传递时,PHP采用了一个COW(写时复制,copy on write)的优化措施! 写时复制的两个要点:  (实际开发可以使用reset ...

  2. 【JS基础-1】JavaScript语言简单介绍(语法、变量、数组、流程控制语句、函数、对象和事件)

    目录 1 JS概述 2 在HTML中引入JS代码 2.1 内部引用 2.2 外部引用 2.3 功能演示:修改标签内容 2.3.1 内部引用 2.3.2 外部引用 3 JS变量 3.1 变量名的命名规则 ...

  3. javascript 数组和对象的浅复制和深度复制 assign/slice/concat/JSON.parse(JSON.stringify())...

    javascript 数组和对象的浅度复制和深度复制 在平常我们用 '='来用一个变量引用一个数组或对象,这里是'引用'而不是复制下面我们看一个例子引用和复制是什么概念 var arr=[1,2,3, ...

  4. Java提升篇:对象克隆(复制)

    引论 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,sho ...

  5. table取tr对象 vue_javascript的DOM对象终极总结:你必看的js面向对象

    <大数据和人工智能交流>头条号向广大初学者新增C .Java .Python .Scala.javascript 等目前流行的计算机.大数据编程语言,希望大家以后关注本头条号更多的内容.作 ...

  6. Java提高—对象克隆(复制)/对象属性拷贝

    对象克隆(复制)假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byt ...

  7. Java进阶之对象克隆(复制)

    转载自   Java进阶之对象克隆(复制) 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bo ...

  8. python给js变量赋值_python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)...

    11.4 JavaScript 11.41 变量 1.声明变量的语法 //1. 先声明后定义 var name; //声明变量时无需指定类型,变量name可以接受任意类型 name= "eg ...

  9. js对象赋值只保留存在的属性_js对象的创建对象模式和继承模式(上)---构建对象模式...

    ​前言 ECMAScript与其他面向对象语言不同的是,它没有类的概念,因此它的对象也和基于类的语言中的对象有所不同,深入理解js的对象是每个前端工程师的基本素养,本文将就创建对象模式的方面对对象进行 ...

最新文章

  1. xmpp这一段蛋疼的 坑,
  2. 【科技金融】互金欺诈黑话大集锦
  3. 面试常考的树,我这样讲给你听!
  4. 【杂谈】提升写代码效率不得不做的三件事
  5. java炒黄金_炒黄金追单的一些问题分析
  6. H盘由于IO设备错误,无法运行此项请求要怎样找到资料
  7. 疯狂ios讲义之使用路径
  8. 【WEB API项目实战干货系列】- 接口文档与在线测试(二)
  9. crontab里shell脚本将top信息写入文件
  10. 限制会话id服务端不共享_不懂 Zookeeper?看完不懂你打我
  11. 《集体智慧编程》读书笔记2
  12. Hibernate征途(三)之CRUD
  13. 【swupdate文档 五】从可信的来源更新镜像
  14. c语言字符型计算器,C语言字符计算器
  15. 宽带可调飞秒激光器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. github android官方客户端,github安卓手机版APK下载-github Android客户端下载v2.0 官方版-腾牛安卓网...
  17. wps右键失效_鼠标点击右键没有反应怎么办
  18. 应聘总经理的答卷,供大家打分!(一)
  19. Nature Biotechnol | 李家洋/余泓团队利用平铺删除策略打破性状连锁,突破水稻产量瓶颈...
  20. 互联网造车最靠谱的方式是合作

热门文章

  1. 蓝桥杯 ADV-63 算法提高 利息计算
  2. [Java] 蓝桥杯ALGO-146 算法训练 4-2找公倍数
  3. [Java] 蓝桥杯 BEGIN-4 入门训练 Fibonacci数列
  4. POJ 1321-棋盘问题-简单搜索DFS
  5. java实现for文件删除_Java 添加、删除、替换、格式化Word中的文本的步骤详解(基于Spire.Cloud.SDK for Java)...
  6. Docker常见命令---简易教程
  7. php workerman定时任务
  8. web3j通过命令行工具新建钱包、更新钱包密码及转账
  9. 多线程-AbstractQueuedSynchronizer(AQS)
  10. img 标签的 src 属性