JS引用类型之Array
ECMAScript中的数组可以说是比较神奇了, ECMAScript中定义的数组每一项可以保存不同的数据类型,如第一项为字符串,第二项为数值等等
1. 那怎么创建一个数组呢?
方法和创建对象实例类似
(1)通过new + 构造函数创建。此处的构造函数就是Array了
即 var arr = new Array()
也可以传递参数 var arr = new Array(20) 则数组长度为20
或者传递字符串 var arr = new Array('a','b')此处创建了包含2个字符串值的数组
使用Array 构造函数时也可以省略new 操作符
(2)用字面量形式创建数组
var color = ['red', 'blue']; //创建包含两个字符串的数组
var name = []; // 创建空数组
var arr = [1,2,]; // 创建包含两项或三项的数组
var p = [,,,,,]; //创建包含5/6项的数组
前两种好懂,解释一下最后两种
为什么会有两种可能,原因是不同浏览器的理解不同,在IE8之前,会认为第三种创建了 项为1,2和undefined的数组
在其他浏览器中,会认为创建了1和2两项
同理 ,最后一种也是这样
但是要注意了,省略值的每一项都会获得undefined值
2. 数组的length 可变
如 var arr = [1,2]
arr[2] = 3
此处数组的长度为2,而要访问第三项,此处会默认为数组添加一项,长度变为3
反之,如果将数组长度设置为1
arr.length = 1;
则数组的最后一项会被删除,再访问arr[1] 输出undefined
若arr.length = 4; 超出原来长度了,则多余的项都会获得undefined值
3. 检测数组
如何检测一个对象是不是数组呢?
if(value instanceof Array) {
// 操作..
}
instanceof操作符的问题在于,它只有一个全局执行环境
若网页中包含多个框架,则有多个不同全局执行环境
从而存在多个版本的Array构造函数
如果你从一个框架向另一个框架传递数组,那么传入的数组和第二个框架原生的数组构造函数不一样
为了解决这个问题,ECMAScript 新增了Array.isArray()方法,目的是确定这个值是不是数组,不限于执行环境
4.转换方法
主要是数组转为字符串;若数组中值为null或undefined ,转换时返回空字符串
通常可以用toString()方法,返回每个值的字符串形式用逗号拼接起来
但是更常用的是join()方法
接受一个参数,即用作分隔符的字符串;不传递参数默认为逗号
['a','b','c'].join('+') //返回 a+b+c
JS引用类型之Array的更多相关文章
- 从一个简单例子来理解js引用类型指针的工作方式
<script> var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x);// --> undefined conso ...
- JavaScript高级编程——引用类型、Array数组使用、栈方法
JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...
- 观V8源码中的array.js,解析 Array.prototype.slice为什么能将类数组对象转为真正的数组?
在官方的解释中,如[mdn] The slice() method returns a shallow copy of a portion of an array into a new array o ...
- js中的Array
js中的Array 啥是ArrayLike对象 类似,下面这种对象的就是ArrayLike var arraylike = { 0: "a", 1: "b", ...
- JS arguments转array
JS arguments转array? Array.prototype.slice.call(arguments)
- 初心不负 笔记-JS高级程序设计-引用类型篇-Array
ES3方法集合: 1join()方法,将一个数组里面的所有元素转换成字符串,然后再将他们连接起来返回一个字符串,通过制定的符号,默认值为逗号.不会改变原数组 ,,,,]; a.join(); &quo ...
- JS引用类型之——数组
前言 数组作为JS中非常常用的引用类型,其功能是非常强大滴,今天小猪就彻底的看了下它.为了防止猪脑子不够用所以记录在案呐 1.数组的创建 var arrayObj = new Array(); //创 ...
- js引用类型数组去重-对象标记法
前言 Js数组去重已经有很多种实现方式:包括逐个检索对比(使用Array.property.indexOf),先排序后对比,使用hash表,利用ES6中的Set()等.这些数组去重办法中速度最快的是h ...
- JS 引用类型
object类型: js中大多数引用类型都是Object类型的实例.创建object实例有两种方法:第一种是使用new操作符后跟Object构造函数. var obj = new Object();o ...
随机推荐
- mongodb数据中的复制(副本集)
---恢复内容开始--- 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性 复制还允许从硬件故障和服务中断中恢复数据 为什么要复制 数据备 ...
- C#学习-类的成员
定义完类之后,还需在类中定义成员. 类的成员包括字段.属性.方法和构造函数等,它们与类一样,也都有自己的访问权限.以下是 public,同一个程序集或引用该程序集的其他程序集都可以访问 private ...
- [转] createObjectURL方法 实现本地图片预览
ie6 可以直接显示本本地路径的图片 如: <img src="file://c:/3.jpg" /> ~~~网上都说ie7就不支持这种文件系统路径的url,但测试 ...
- 【转】Crosswalk入门
原文:https://www.mobibrw.com/2015/1934 Crosswalk是一款开源的web引擎.目前Crosswalk正式支持的移动操作系统包括Android和Tizen,在And ...
- codeforces 1037
题解: E-trips 哎哎哎好傻逼啊 没有想到算不能的一直在想怎么算能的 太傻逼了 其实很简单 我们只需要对好友<=k的首先dfs一下给他连接着的朋友-1 然后如果小于了就递归下去 这个正确性 ...
- AtCoder Regular Contest 101
C题是个傻逼题, 一定是先向右,然后停了或者向左走到某一个点(左边同理)模拟就可以了 D题想了一会才想出来 和tjoi那道排序挺像的 二分答案变0/1来做 刚开始写的时候还把自己作为另外一类搞出来 这 ...
- 【Android】让Python在Android系统上飞一会儿
第一节 在手机上配置Python运行环境 1.下载和安装 Scripting Layer for Android (SL4A) Scripting Layer for Android (SL4A) 是 ...
- google hacking
Google是一个强大的搜索引擎:而对于黑客而言,则可能是一款绝佳的黑客工具.正因为google的检索能力强大,黑客可以构造特殊的关键字,使用Google搜索互联网上的相关隐私信息.通过Google, ...
- 使用ycsb对hbase1.4.9 benchmark
Ycsb下载地址:https://github.com/brianfrankcooper/YCSB/releases 目前测试hbase1.4.9,因此下载ycsb-hbase14-binding-0 ...
- Linux LVM动态扩容
引用自: https://blog.csdn.net/u012439646/article/details/73380197 xfs_growfs /dev/centos/root 一.首先安 ...