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 ...
随机推荐
- HouseParty原创故事全角色关系及主线剧情介绍(最新版)
这是原创故事的主要的角色的主线及支线剧情的介绍及攻略和注意事项等. 这里的图比哔哩哔哩上的图清楚一点,哔哩哔哩同号:宅猫君007 以上是全角色的关系图 最新版本的游戏下载就在我的网站上:https:/ ...
- 基于改进MFCC特征和卷积递归神经网络的心音分类
具体的软硬件实现点击http://mcu-ai.com/MCU-AI技术网页_MCU-AI人工智能 心音分类在心血管疾病的早期发现中起着至关重要的作用,特别是对于小型初级卫生保健诊所.尽管近年来心音分 ...
- docker-compose 安装 etcd
目录 docker-compose.yaml docker-compose.yaml version: "3" services: etcd: hostname: etcd ima ...
- 当你用neovim的mason插件管理lsp config,并且配置好bash的bashls后,却没有正常工作的解决方式
刚开始遇到这个情况我百思不得其解,检查了neovim checkhealth,以为是npm包管理的问题,然后删了下删了下 不但没有解决还把包管理整乱了-- 后来发现是我没仔细看bash-languag ...
- STM CubeMx不能生成代码的解决方法
在使用STM CubeMx时,遇到不能生成代码的问题,即点击"GENERATE CODE"后,软件没有任何反应. 从网上找到若干解决方案,大概是: 以下是可能的解决方法: 1. 确 ...
- AIRIOT答疑第5期|如何使用低代码业务流引擎?
推拉拽! AIRIOT平台业务流引擎可创建丰富的业务流程,实现从流程定义.数据处理.任务工单.消息通知.日志追踪的闭环流转.多类型节点任意组合,可视化流程日志,精准追踪流程流转.人工任务统一管理,审批 ...
- k8s 怎么精准获取deployment关联的pods?
标签获取 我们获取那些pods属于某个deployment时最先想到的可能是通过标签获取,其实这个是不准确的.因为标签并不是唯一的,也就是说不同deployment其实是能有相同标签的. replic ...
- Android 13 - Media框架(30)- ACodec(六)
关注公众号免费阅读全文,进入音视频开发技术分享群! 前一节我们了解了input buffer写入的流程,知道了起播写前几笔数据时会先获取graphic buffer,这一节我们就一起来了解下deque ...
- c#动态执行脚本的3种方式详解
1.使用Roslyn编译器 2.使用IronPython或IronRuby 3.使用JavaScript引擎 在C#中,可以使用一些第三方库或内置类库实现动态执行脚本的功能.以下是几个常用的方案: 1 ...
- Rainbond 携手 TOPIAM 打造企业级云原生身份管控新体验
TOPIAM 企业数字身份管控平台, 是一个开源的IDaas/IAM平台.用于管理账号.权限.身份认证.应用访问,帮助整合部署在本地或云端的内部办公系统.业务系统及三方 SaaS 系统的所有身份,实现 ...