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 >= ...
随机推荐
- cc23b_demo-函数对象c++ 调用操作符的重载与函数对象-//用模板定义一元谓词、代码示范
//用模板定义一元谓词. #include <iostream> #include <vector> #include <algorithm> using name ...
- 使用IDEA+Gradle构建Spring5源码并调试(手把手教程全图解)
一.前言 说一说我要写这篇文章的初衷吧,前段时间有小伙伴在微信群求教怎样构建spring源码,他在网上找了n个教程跟着后面花了两天时间都没构建好,正好我最近因工作原因从mac换成windows,开 ...
- 深入浅出Transformer
Transformer Transformer是NLP的颠覆者,它创造性地用非序列模型来处理序列化的数据,而且还获得了大成功.更重要的是,NLP真的可以"深度"学习了,各种基于tr ...
- Python对文本读写的操作方法【源码】
Dear ALL 今天给大家分享的是 TXT文本读写方式,也是文件操作最常用的一种方式,主要内容有: 文件写方法 文件读方法 with open() as f 方法 话不多说,码上见: ''' 标题: ...
- 最简单的jQuery轮播图(原理解析)
html: <div class="middle_right"> <div id="lunbobox"> <div id=&quo ...
- 机器学习之KNN算法(分类)
KNN算法是解决分类问题的最简单的算法.同时也是最常用的算法.KNN算法也可以称作k近邻算法,是指K个最近的数据集,属于监督学习算法. 开发流程: 1.加载数据,加载成特征矩阵X与目标向量Y. 2.给 ...
- python基础知识练习2
1.请写出如下代码的结果: import copy list1 = [1,2,['a','b'],('c','d')] list2 = list1 list3 = copy.copy(list1) l ...
- H5禁止微信内置浏览器调整字体大小
微信webview内置了调整字体大小的功能,用户可以根据实际情况进行调节.但是这也会导致字体大小改变以后,出现页面布局错乱的情况. 1.iOS的解决方案是覆盖掉微信的样式: body { /* IOS ...
- HDU-1051/POJ-1065 Wooden sticks 木棍子(动态规划 LIS 线型动归)
嘤嘤嘤,实习半年多的小蒟蒻的第一篇博客(题解) 英文的: There is a pile of n wooden sticks. The length and weight of each stick ...
- 读CSAPP第一章的收获
这个系列只写了CSAPP第三版对于我的收获. 里面的内容很多,我只写我以前不知道的,然后现在又觉得挺有用的内容. 没有很好的排版,将就看. Amadhl定律:主要观点,想要显著加速整个系统,必须提升全 ...