Js 中的数组
在js 中,数组就是对象,除了可以使用字面量语法[...]来声明数组外,它和其它对象没有什么区别。当创建一个数组[‘a’, ‘b’, ‘c’]时,内部的实现形式如下:
{
length: 3,
0: 'a',
1, 'b',
2, 'c'
}
可以使用Object.assgin 和对象解构的方式来验证一下
Object.assign({}, [1, 2]); // { '0': 1, '1': 2 }
当然,这个对象从Array.prototype 继承了map, push 等常用的数组方法。当对数组进行迭代时,比如使用map,它首先看的是length , 然后再开始从零查找对应的每一个元素或属性,直到length 结束。When performing iterative operations like map the array will internally look at its length and then check itself for any properties within the range starting at zero and ending at length. 你可能使用过下面的语法,但发现不起作用,数组arrayA 依然是空。
let arrayA = new Array(3).map(function() { return 1 }); // not work
console.log(arrayA); // still empty
当使用new Array(3) 创建数组的时候,它并不会创建3个undefined 值,它只是把新创建的数组的length设为了3. 我们可能认为 new Array(3) 的内部实现形式如下:
{
length: 3,
0: undefined,
1: undefined,
2: undefined,
}
其实它的内部实现形式如下
{
length: 3
}
它只有一个length 属性3,但没有实际的3个值。这些没有存在的值称为holes. map 对holes 不起作用。This missing values are calls holes. Method like map don’t work on holes。 所以我们试图创建拥有三个值的数组不起作用。可以使用fill 方法,当对数组进行填充的时候,它不管是不是holes. When filling the array, it doesn’t care if at a given index there’s is a value or a hold.
let arrayA = new Array(3).fill(1); // work
创建holes 的另外一种形式是数组字面量中使用,但不给值。比如[1,2,,,,,,,5].
不过ES6 增加的方法,如for of, Array.from, 都把holes 当作undefined 处理
const a = Array.from([,,,]); // Array of 3 holes created with ES6's Array.from()
for (const val of a) {
alert(val === undefined);
}
数组的toString() 和valueOf() 方法返回相同的值,都是字符串。数组的每一项用,连接
let colors = ["red", "blue", "green"]; // creates an array with three strings
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
Js 中的数组的更多相关文章
- js中的数组
上网查了一下,js中的数组包含的内容还真不少.先给出两个学习的链接: w3school链接:http://www.w3school.com.cn/js/js_obj_array.asp 博客园链接:h ...
- JS中Array数组的三大属性用法
原文:JS中Array数组的三大属性用法 Array数组主要有3大属性,它们分别是length属性.prototype属性和constructor属性. JS操作Array数组的方法及属性 本文总结了 ...
- JS中对数组元素进行增删改移
在js中对数组元素进行增删改移,简单总结了一下方法: 方法 说明 实例 push( ); 在原来数组中的元素最后面添加元素 arr.push("再见58"); unshift( ) ...
- js中的数组遍历
js中的数组遍历是项目中经常用到的,在这里将几种方法做个对比. ! for循环:使用评率最高,也是最基本的一种遍历方式. let arr = ['a','b','c','d','e']; for (l ...
- 遍历js中的数组
可以使用js中的for循环,或者forEach方法:也可以使用Ext中的方法遍历js中的数组 代码如下: /** * 遍历数组 */ var arr = ['越南', '新加坡', '美国', '俄罗 ...
- java:JavaScript3(innerHTML,post和get,单选框,多选框,下拉列表值得获取,JS中的数组,JS中的正则)
1.innerHTML用户登录验证: <!DOCTYPE> <html> <head> <meta charset="UTF-8"> ...
- JS中的数组复制问题
JS中的数组复制问题 前言 首先提到复制,也就是拷贝问题,就必须要明确浅拷贝和深拷贝. 浅拷贝:B由A复制而来,改变B的内容,A也改变 深拷贝:B由A复制而来,改变B的内容,A的内容不会改变 总的来说 ...
- js 中关联数组
以前都不知道这种写法叫做关联数组. 何为关联数组呢.通常的数组在填充时会隐式或者显示指定数组下标,但JS中数组可以以名字的形式为元素赋值,这就形成了关联数组. 例子 var p={ name:'dai ...
- js中删除数组中某一项的方法
1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...
- JS中遍历数组、对象的方式
1.标准的for循环遍历数组 //不打印自定义属性和继承属性 var array = [1,2,3]; for (var i = 0; i < array.length; i++) { cons ...
随机推荐
- JDK源码阅读-------自学笔记(十六)(java.util.Random随机数类)
Random类简介 如果使用Math.random()计算过于复杂的话,我们可以使用例外一种方式得到随机数,即Random类,这个类是专门用来生成随机数的,并且Math.random()底层调用的就是 ...
- JDK源码阅读-------自学笔记(十四)(java.util.Calendar日历类)
Calendar 提供了关于日期计算的相关功能,比如:年.月.日.时.分.秒的展示和计算. GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的 ...
- HC32L110(六) AS06-VTB07H V5.0测试板AT指令固件
目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...
- 【超强SQL】WordPress批量修改指定分类下所有文章状态
前阵子主题君的某一个手游下载站的某一个分类,被百度K了,导致整个分类的文章收录都没了,这时候如果想要回复权重,就需要把这个分类的文章都删除了. 下面主题君给大家分享一段巨牛逼的SQL, WordPre ...
- C#老码农的职业生涯
开头白 大家好,我是tibos,19年10月1号由深圳回武汉的码农,目前入职武汉福禄网络,最近刷到的年终总结也比较多,赶在这最后一天,我也来凑个热闹 心路历程 -> 菜鸟入江湖 13年开启码农的 ...
- Docker批量删除容器/镜像
1.删除所有的容器 docker rm `docker ps -a -q` 2.删除所有的镜像 docker rmi `docker images -q` 提示: -q参数:只显示容器ID
- 文件系统(五):exFAT 文件系统原理详解
前言 exFAT是微软2006年推出的一种文件系统,距今已快二十年,相比于FAT16和FAT32,exFAT还是算年轻.exFAT一直是微软的一个专用文件系统,直到2019年微软发布它的规范,目前微软 ...
- CENTOS6.8 修改主机名
1.临时修改主机名 显示主机名:spark@master:~$ hostnamemaster修改主机名:spark@master:~$ sudo hostname hadoopspark@mast ...
- manjaro安装错误的显卡驱动导致无法开机(解决办法)
手欠的我 最近发觉我的manjaro有时候开机会卡死在clean ....这个地方,然后我去看了下系统的日至,发现是nvidia的一个报错,我也不太懂什么意思 然后我就自己动手想改改显卡驱动(从pri ...
- OpenCV笔记(5) Rect类
看项目代码时,发现了Rect的神奇用法,rect = rect + point.于是了解了一下Rect类. 1. 构造函数 public Rect(Point location, Size size) ...