0%
这是一片思考的空间 -- arthinking
Spring 重构&代码整洁之道 软件设计 JVM 并发编程 数据结构与算法 分布式 存储 网络 微服务 设计模式
Java技术栈 - 涉及Java技术体系

Javascript笔记 - Javascript中的数组

作为弱类型的Javascript语言,同一个数组中可以包含不同的数据类型。

Javascript数组提供的方法有如下:

方法 描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素。
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素。
slice() 从某个已有的数组返回选定的元素。
sort() 对数组的元素进行排序。
splice() 删除元素,并向数组添加新元素。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值。

Javascript中的数组提供了各种像栈和列表的功能,其功能是非常强大的。

1、数组的特性:

1.1、length属性

该属性表示数组的当前长度,但是Javascript中也可以修改该属性的值:

var arr = new Array(1, 2, 3);
alert(arr.length); //3
arr.length = 4;
alert(arr.length); //4
alert(arr); //1,2,3,

1.2、使用字符串作为数组的下标:

var animal = new Array();
animal['pig'] = 1;
animal['dog'] = 0.1;
animal['mouse'] = "mouse";
var result="";
for(var item in animal){
result += animal[item] +" ";
}
alert(result);

2、数组的使用:

2.1、创建数组:

//创建数组的方法
var array1 = new Array();
var array2 = new Array(3);
var array3 = new Array("a","b","c");

var array4 = ["a","b","c"]; //通过字面值来创建,这种方法使用最多

2.2、向数组中添加元素:

array1.push("Jason");
array1.push(1);
for(var i=0; i<array1.length; i++){
alert(array1[i]);
}

2.3、弹出数组中的元素:

var array1Length = array1.length;
for(var i=0; i<array1Length; i++){
alert(array1.pop());
}
alert(array1.length); //0

2.4、连接一个数组中的所有元素:

var array = ["a","b","c"];
var str = array.join("|");
alert(str); //a|b|c

2.5、多个数组元素:

var array1 = ["a","b","c"];
var array2 = ["a","b","c"];
var array3 = ["a","b","c"];
var conArray = array1.concat(array2, array3);
alert(conArray); //a,b,c,a,b,c,a,b,c

2.6、从数组中取一定数量的元素,不影响数组本身:

var array = ["a","b","c","d","e","f"];
alert(array.slice(2,4));// c,d

2.7、从数组中某个位置删除添加元素:

var array = ["a","b","c","d","e","f"];
array.splice(2,2); //删除了c,d
alert(array); //a,b,e,f

var array = ["a","b","c","d","e","f"];
array.splice(2,2,"Jason"); //删除了c,d,并在b后面加上Jason
alert(array); //a,b,Jason,e,f

注意:使用delete删除数组元素时,被删除的元素的位置会变为undefined,而不会删除这个元素所占据的位置,即长度不会变。

2.8、遍历数组:

使用for…in:

//for...in
var array = ["a","b","c"];
for(var key in array){
alert(array[key]);
}

这种形式会输出所有的元素,如果只想访问下表是数字的元素,可以这样循环:

for(var i=0, len = array1.length; i<len; i++){
alert(array1[i]);
}

欢迎关注我的其它发布渠道

订阅IT宅
内功修炼
Java技术栈
Java架构杂谈是IT宅精品文章公众号,欢迎订阅:
📄 网络基础知识:两万字长文50+张趣图带你领悟网络编程的内功心法 📄 HTTP发展史:三万长文50+趣图带你领悟web编程的内功心法 📄 HTTP/1.1:可扩展,可靠性,请求应答,无状态,明文传输 📄 HTTP/1.1报文详解:Method,URI,URL,消息头,消息体,状态行 📄 HTTP常用请求头大揭秘 📄 HTTPS:网络安全攻坚战 📄 HTTP/2:网络安全传输的快车道 📄 HTTP/3:让传输效率再一次起飞 📄 高性能网络编程:图解Socket核心内幕以及五大IO模型 📄 高性能网络编程:三分钟短文快速了解信号驱动式IO 📄 高性能网络编程:彻底弄懂IO复用 - IO处理杀手锏,带您深入了解select,poll,epoll 📄 高性能网络编程:异步IO:新时代的IO处理利器 📄 高性能网络编程:网络编程范式 - 高性能服务器就这么回事 📄 高性能网络编程:性能追击 - 万字长文30+图揭秘8大主流服务器程序线程模型
📄 Java内存模型:如果有人给你撕逼Java内存模型,就把这些问题甩给他 📄 一文带你彻底理解同步和锁的本质(干货) 📄 AQS与并发包中锁的通用实现 📄 ReentrantLock介绍与使用 📄 ReentrantReadWriteLock介绍与使用 📄 ReentrantLock的Condition原理解析 📄 如何优雅的中断线程 📄 如何优雅的挂起线程 📄 图解几个好玩的并发辅助工具类 📄 图解BlockingQueue阻塞队列
📄 消息队列那么多,为什么建议深入了解下RabbitMQ? 📄 高并发异步解耦利器:RocketMQ究竟强在哪里? 📄 Kafka必知必会18问:30+图带您看透Kafka
📄 洞悉MySQL底层架构:游走在缓冲与磁盘之间 📄 SQL运行内幕:从执行原理看调优的本质 📄 洞悉Redis技术内幕:缓存,数据结构,并发,集群与算法