js:数组(创建、遍历、函数)
1、数组
采用单个变量只能存储一个数据,数组能够存储多个数据,获取方式也比较简单。它是将一组数据存储在当个变量下的存储方式。
2、数组的创建
(1)new方式创建,不指定数组长度
<script>
var arr=new Array();
arr[]=;
arr[]=true;
arr[]='a';
for(var i=;i<arr.length;i++){
console.log(arr[i]);
console.log(typeof arr[i]);
console.log('---------');
}
</script>

(2)new方式创建数组并指定数组长度:
<script>
var arr=new Array();
arr[]=;
arr[]=true;
arr[]='a';
for(var i=;i<arr.length;i++){
console.log(arr[i]);
console.log(typeof arr[i]);
console.log('---------');
}
</script>

(3)创建数组的时候直接实例化数组
<script>
var arr=new Array('a',true,);
for(var i=;i<arr.length;i++){
console.log(arr[i]);
}
</script>

(4)字面量方式创建数组
<script>
var arr=['a','b','c',true,];
for(var i=;i<arr.length;i++){
console.log(arr[i]);
}
</script>

3、数组的扩容
(1)修改长度
<script>
var arr=new Array('a',true,);
arr.length=;
for(var i=;i<arr.length;i++){
console.log(arr[i]);
}
</script>

(2)追加元素
<script>
var arr=new Array('a',true,);
arr[]='';
arr[]='abc';
for(var i=;i<arr.length;i++){
console.log(arr[i]);
}
</script>

3、数组的遍历
(1)for循环遍历方式
<script>
var arr=new Array('a',true,,'a','qq');
for(var i=;i<arr.length;i++){
console.log(i+':'+arr[i]);
}
</script>

for循环遍历的优化:
<script>
var arr=new Array('a',true,,'a','qq');
var l=arr.length;
for(var i=;i<l;i++){
console.log(i+':'+arr[i]);
}
</script>

避免了反复获取数组的长度造成程序的性能减低
(2)for ... ...in(效率低)
<script>
var arr=new Array('a',true,,'a','qq');
for(var i in arr){
console.log(i+':'+arr[i]);
}
</script>

(3)for... ...of
<script>
var arr=new Array('a',true,,'a','qq');
var l=arr.length;
for(var i of arr){
console.log(i+':'+arr[i]);
}
</script>

for.. ..in的输出的参数是索引,for... ...of直接輸出的是對應索引的内容,性能好于for... ...in,但是不能处理对象
(4)forEach
<script>
var arr=new Array('a',true,,'a','qq');
var l=arr.length;
arr.forEach( function(item,index){
console.log(index+':'+item)
} )
</script>

性能比for循环要弱
4、相关函数
(1)concat:连接两个数组
<script>
var arr1=new Array('a',true,,'a','qq');
var arr2=new Array('','');
var arr3=arr1.concat(arr2);
arr3.forEach( function(item,index){
console.log(index+':'+item)
} )
</script>

(2)join() 把数组中的所有元素放入一个字符串,元素通过指定的分隔符进行分隔
<script>
var arr1=new Array('a',true,,'a','qq');
console.log(arr1.join("-"));
</script>

(3)排序
数字型数据:
<script>
var arr=new Array(,,,,,,);
console.log(arr.sort());
</script>

字符串型:
<script>
var arr=new Array('a','c','d','t','b');
console.log(arr.sort());
</script>

sort函数是按照字母顺序(ascII)进行排序的
要想实现对数字的排序,需要添加一个函数:
<script>
function sortNumber(a,b)
{
return a - b
}
var arr=new Array(,,,,);
console.log(arr.sort(sortNumber));
</script>

(4)其他函数
- splice:删除元素并添加新元素
- toString:将数组转换为字符串并返回
- valueOf:返回数组的原始值
- unshift:向数组的开头添加一个或更多元素,并返回新的长度
- push:向数组的末尾添加一个或更多元素,并返回新的长度。等... ...
总结:
与c和java的数组不同,js中在同一个数组中允许有多种数据类型的数据存在
js:数组(创建、遍历、函数)的更多相关文章
- JS: 数组的循环函数
JS 数组相关的循环函数,用得挺多,所以有些坑还是要去踩一下,先来看一道面试题. 注意:下面提到的不改变原数组仅针对基本数据类型. 面试题 模拟实现数组的 map 函数. 心中有答案了吗?我的答案放在 ...
- JS数组&对象遍历
遍历的总结,经常用到的,希望帮助你我成长. JS数组遍历: 1,普通for循环 var arr = [1,2,3,4,9]; for ( var i = 0; i <arr.length; i+ ...
- js数组的splice函数
一直没搞懂数组的splice函数,今天稍微测试了一下,了解了它的功能,在这里记录一下 1.测试 测试① var a = [1,2,3]; console.info(a.splice(1,1)); co ...
- js数组,数字函数,字符串函数,表单验证,hashMap,堆栈,日期函数,call函数
1.javascript的数组API Js代码 收藏代码 //定义数组 var pageIds = new Array(); pageIds.push('A'); 数组长度 pageIds.lengt ...
- JS数组(Array)处理函数总结
1.concat() 连接两个或更多的数组该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本.例如: <script type="text/javascript"&g ...
- js数组创建两种方法
一.数组直接量形式创建数组 var arr=[];//空数组 ,,,,,]; ,,,],{x:,y:}]; ; ,x+,x+]; console.log(arr3); //[1,3,3,4] ,,]; ...
- js数组之可变函数
在js的数组中有两个方法为数组添加元素:1.push();2.unshift(),push函数是将元素添加到数组的末尾,现在不用说大家估计也能猜出来,unshift这个函数就是把元素添加到数组的开头的 ...
- js数组的遍历(API)
1.for 循环 普通遍历方法,可优化,存下数组的length,避免每次都去获取数组的length,性能提升 for(var i=0;i<arr.length;i++){ console.log ...
- js数组之sort()函数
一般我们使用sort函数进行数组的排序,sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = [&q ...
- js every some 遍历函数理解
1.every let arr = [0, 1, 2, 3, 4, 5]; let result = arr.every((item, index) => { return item >= ...
随机推荐
- ssh生成单个公钥
ssh生成单个公钥命令: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 查看公钥: cat ~/.ssh/id_rsa ...
- java中值传递
最近学基础的时候,老师讲了值传递和引用传递,这个问题一直不太明白,上网查了很多资料,按照自己的理解整理了一遍,发现之前不太明白的地方基本上想明白了,如有不正确的地方,欢迎指正,谢谢. 首先要说明的是j ...
- 深入理解RocketMQ(九)---实战(代码)
一.批量发送消息 即多条消息放入List,一次发送,从而减少网络传输,提高效率 DefaultMQProducer producer = new DefaultMQProducer("bat ...
- caffe的python接口学习(3)训练模型training
如果不进行可视化,只想得到一个最终的训练model, 那么代码非常简单,如下 : import caffe caffe.set_device(0) caffe.set_mode_gpu() solve ...
- express高效入门教程(4)
4.静态文件 4.1.普通处理静态文件的方法 在./views/index.html文件中去引入另一个css文件index.css,index.css文件放在public/css目录下,目录结构是这样 ...
- JavaScript基础尽量少使用全局变量(001)
Pattern意思是模式,好的编码习惯经过多次实践的应用就会形成模式,而反模式(Anti-Pattern)则是不好的编码习惯.了解 JavaScript模式之前,先来看看Anti-pattern的例子 ...
- 学习 Spring Boot 知识看这一篇就够了
从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...
- Linux服务搭之 - 消息队列(RabbitMQ)
本章主要目的是为了后续spring-cloud-bus做准备,讲述在Linux Centos7操作系统中搭建 RabbitMQ… - 什么是RabbitMQ RabbitMQ 是一个使用 Erlang ...
- sql多列排序
从左到右依次排列,如果出现重复值,则按照右侧的排序规则进行排序: 例如:分数倒序排序,但是遇到重复值,则再按照class_id倒序排 例如:分数倒序排序,没有重复值,进行了正常的排序,则不再按照cla ...
- Tomcat Filter之动态注入
前言 最近,看到好多不错的关于"无文件Webshell"的文章,对其中利用上下文动态的注入Filter的技术做了一下简单验证,写一下测试总结,不依赖任何框架,仅想学习一下tomca ...