创建数组_如何创建数组

js数组

js的数组不是典型的数组

典型的数组

元素的数据类型相同

使用连续的内存储存

通过数字下标获取元素

但是js的数组不这样

元素的数据类型可以不同

内存不一定连续的(对象是随机储存的)

不可以通过数字下标,而是通过字符串下标

这意味着数组可以有任何的key

比如:
let arr = [1,2,3]
let['xxx'] =1

对比不同:
典型的数组:连续存储的

75e1249630f480569fd495f91d97147c.png


但是js的数组:

f3c628f4e623ee27dcb28fbd89d092b2.png
//创建一个数组:
let arr = [1,2,3]
let arr = new Array(1,2,3)
let arr = new Array(3)//长度
//转化数组
let str = '1,2,3'
undefined
str.split(',')
(3) ["1", "2", "3"]
let str = '123'.split('')
undefined
str
(3) ["1", "2", "3"]
Array.from({0:'1',1:'b',length:4})
(4) ["1", "b", undefined, undefined]

图片来自于:

写代码啦!​xiedaimala.com

伪数组(偷偷转化为数组)

伪数组的原型链中并没有数组的原型,没有数组共用属性的数组就是伪数组

什么是伪数组?

  1. 拥有 length 属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
  2. 不具有数组所具有的方法
let divList = document.querySelector('div')
伪数组的原型链中并没有数组的原型原理:
array = [1,2,3,4,5](5) [1, 2, 3, 4, 5]array.__proto__ === Array.prototype
true
array(5) [1, 2, 3, 4, 5]
0: 1
1: 2
2: 3
3: 4
4: 5
length: 5
__proto__: Array(0)//第一层原型
concat: ƒ concat()
constructor: ƒ Array()
copyWithin: ƒ copyWithin()
entries: ƒ entries()
every: ƒ every()
fill: ƒ fill()
filter: ƒ filter()
find: ƒ find()
findIndex: ƒ findIndex()
flat: ƒ flat()
flatMap: ƒ flatMap()
forEach: ƒ forEach()
includes: ƒ includes()
indexOf: ƒ indexOf()
join: ƒ join()
keys: ƒ keys()
lastIndexOf: ƒ lastIndexOf()
length: 0
map: ƒ map()
pop: ƒ pop()
push: ƒ push()
reduce: ƒ reduce()
reduceRight: ƒ reduceRight()
reverse: ƒ reverse()
shift: ƒ shift()
slice: ƒ slice()
some: ƒ some()
sort: ƒ sort()
splice: ƒ splice()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
unshift: ƒ unshift()
values: ƒ values()
Symbol(Symbol.iterator): ƒ values()
Symbol(Symbol.unscopables): {copyWithin: true, entries: true, fill: true, find: true, findIndex: true, …}
__proto__:                         //第二层原型
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()
array = {0:'a',1:'b',2:'c',length:3}
{0: "a", 1: "b", 2: "c", length: 3}
0: "a"
1: "b"
2: "c"
length: 3
__proto__:
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()

详细内容:

JavaScript中的伪数组和数组_jhkkk的博客-CSDN博客_伪数组​blog.csdn.net
752e89383a57b8eb03efccceca5c6f59.png

contact:连接两个数组,但是不改变两个数组

let arr3 = [3,3,3]
undefined
let arr4 = [4,4,4]
undefined
arr3.concat(arr4)
(6) [3, 3, 3, 4, 4, 4]
arr3
(3) [3, 3, 3]
arr4
(3) [4, 4, 4]

slice:切分两个数组但是不改变这两个数组

想要复制的方法就用

arr.slice(0)//注意,js只提供浅拷贝
let arr5 = [1,2,3,4,5,6,7,8,9]
undefined
arr5.slice(2)
(7) [3, 4, 5, 6, 7, 8, 9]
arr5
(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node.js 实现udp传输_Node.js实战15:通过udp传输文件。

本文将要写一个udp服务器,和一个udp客户端,并实现客户端发送文件给服务器。服务器端代码如下:var dgram require("dgram");server();function server(){var socket dgram.createSocket("udp4");socket.on("messag…

mysql镜像压缩包使用_如何连接docker的mysql镜像

展开全部推荐使用Dockerfile方式。服务的管理使用的是supervisord, 因为dockerfile里只会有一个cmd生效,如果我想62616964757a686964616fe58685e5aeb931333361326332通过ssh去管理容器还要有mysql服务的启动起来 cmd的方式就无法实现,当然容器不需要以sshd的方式去管…

alibaba 实体转json_com.alibaba.fastjson 转换List Map等对象

原文:http://www.cnblogs.com/goody9807/p/4244862.html本文讲解2点:1. fastjson生成和解析json数据(举例:4种常用类型:JavaBean,List,List,List)2.通过一个android程序测试fastjson的用法。fastjson简介:Fastjson是一个Java语言编…

高性能mysql看不懂_高性能mysql笔记1

转载请注明&#xff1a;TheViper http://www.cnblogs.com/TheViper<>这本书写的真的很好&#xff0c;只可惜本屌不才&#xff0c;大部分都看不懂&#xff0c;暂且记下与mysql优化有关&#xff0c;对自己有用的东西。测试指标吞吐量吞吐量指的是单位时间内的事务处理数&am…

python 热词分析_Python笔记:热词分析2020-01-01

热词分析在公众趋势分析、舆情分析有很宽广的应用&#xff0c;我们来看看怎么从一个TXT文件中分析出文章的热词出来&#xff0c;我们采用流行的第三方“结巴”包来实现。首先安装第三方包(matplotlib&#xff0c;jieba&#xff0c;wordcloud&#xff0c;numpy)mmatplotlib主要来…

子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法

来源 | https://github.com/CommanderXL/biu-blog/issues/25exec其中exec可用于在指定的shell当中执行命令。不同参数间使用空格隔开&#xff0c;可用于复杂的命令。const { exec } require(child_process)exec(cat *.js bad_file | wc -l)exec方法用于异步创建一个新的子进程…

mysql筛选两个表有相同项的数据库_用SQL查询两个表中相同的数据

展开全部 1、创建测试表; create table test_col_1(id number, var varchar2(200)); create table test_col_2(id number, var varchar2(200)); 2、插入测试数据, insert into test_col_1 select level*8, var||32313133353236313431303231363533e59b9ee7ad9431333431373839l…

MySQL建表添加乐观锁字段_Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化...

Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化项目介绍基于SpringBootMybatis搭建的秒杀系统&#xff0c;并且针对高并发场景进行了优化&#xff0c;保证线程安全的同时极大地提高了服务器的吞吐量&#xff0c;主要优化手段有页面静态化、Redis缓存(页…

叶金荣mysql教程_mysql优化--叶金荣老师讲座笔记

copy to tmp table执行ALTER TABLE修改表结构时建议&#xff1a;凌晨执行Copying to tmp table拷贝数据到内存中的临时表&#xff0c;常见于GROUP BY操作时建议&#xff1a;创建索引Copying to tmp table on disk临时结果集太大&#xff0c;内存中放不下&#xff0c;需要将内存…

python qqbot实现qq聊天机器人_Python QQBot库的QQ聊天机器人

本文实例为大家分享了Python QQBot库的QQ聊天机器人的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下1.安装pip install qqbot2.主动发出消息from qqbot import _bot as bot# 登录QQbot.Login([-q, 2816626661])buddy 获取指定名称/备注的好友group 获取群buddy bot…

tp5 mysql实现消息队列_TP5系列 | Queue消息队列

消费信息如下ThinkPHP5 Queue消息队列优点1、Queue内置了 Redis&#xff0c;Database&#xff0c;Topthink &#xff0c;Sync这四种驱动&#xff0c;本文使用Redis驱动2、Queue消息队列适用于大并发或者返回结果 时间有点长并需要批量操作的第三方接口&#xff0c;可用于短信发…

java创建临时文件夹_java创建临时文件

[java]代码库/*** 创建临时文件** param prefix* 临时文件名的前缀* param suffix* 临时文件名的后缀* param dirName* 临时文件所在的目录&#xff0c;如果输入null&#xff0c;则在用户的文档目录下创建临时文件* return 临时文件创建成功返回true&#xff0c;否则返回false*…

linux cmake编译安装mysql_Linux源码安装MySQL 5.6.12 (Cmake编译)

Linux源码安装MySQL 5.6.12 (Cmake编译)1.安装make编译器(默认系统自带)下载地址&#xff1a;tar zxvf make-3.82.tar.gzcd make-3.82./configuremakemake install2.安装bison下载地址&#xff1a;tar zxvf bison-2.5.tar.gzcd bison-2.5./configuremakemake install3.安装gcc-…

JAVA怎么实现网页退出系统_java后台实现js关闭本页面,父页面指定跳转或刷新操作...

关闭本页面&#xff0c;跳转到百度response.setCharacterEncoding("gbk");PrintWriter outresponse.getWriter();out.print("");out.print("");关闭本页面&#xff0c;刷新父页面response.setCharacterEncoding("gbk");PrintWriter ou…

java 布尔逻辑运算符_Java运算符

Java语言提供许多操作符。操作符是特殊的符号(symbol)&#xff0c;它对一个或者两个、三个的操作数进行运算&#xff0c;然后返回一个结果&#xff0c;最简单的就像我们一年级学到的 -号。一般地&#xff0c;可以将运算符分为四大类&#xff1a;算数运算符、位运算符、关系运算…

Java自动化获取页面主题_基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍

1. 启动浏览器前边有详细介绍启动三种浏览器的方式(IE、Chrome、Firefox)&#xff1b;private WebDriver driver null;private String chromeDriverDir "D:\\workspace\\A_Test\\resource\\chromedriver.exe";/*** 打开谷歌浏览器&#xff1b;*/public void openCh…

js java 反射机制_java 类加载机制和反射机制

一.类的加载机制jvm把class文件加载到内存&#xff0c;并对数据进行校验、解析和初始化&#xff0c;最终形成jvm可以直接使用的java类型的过程。(1)加载将class文件字节码内容加载到内存中&#xff0c;并将这些静态数据转换成方法区中的运行时数据结构&#xff0c;在堆中生成一…

lambda 流 peek java_JDK8 流与λ表达式

λ表达式什么是λ表达式λ表达式有三部分组成&#xff1a;参数列表&#xff0c;箭头(->)&#xff0c;以及一个表达式或者语句块。public int add(int x, int y) {return x y;}转换为λ表达式(int x, int y) -> x y;去除参数类型(x, y) -> x y;无参 以及 只有一个参…

理解java虚拟机工作后了解吗_JAVA入门到再次入门——深入理解JAVA虚拟机(二)|七日打卡...

前言为什么叫做入门到到再次入门请参考前一篇或个人博客&#xff0c;在此不再赘述&#xff0c;嗯哼&#xff0c;了解了JVM的基本运行流程以及内存结构&#xff0c;算是初步认识了JVM&#xff0c;跟着课本往前走&#xff0c;继续了解根据JVM的内存模型探索java当中变量的可见性以…

java访问错误404_如何解决 Java web 项目中的 404 错误

在使用 Tomcat 进行 Java Web 开发的时候&#xff0c;经常会遇到以下 HTTP 404 错误&#xff1a;错误代码为 HTTP 404(未找到)&#xff0c;描述信息是&#xff1a;“The origin server did not find a current representation for the target resource or is not willing to di…