javascript之数组
一、定义数组。
定义数组有两个方法:
1、var arr1 = []; //定义一个空数组
2、var arr2 = [1,2,3,"str1","str2"]; //定义一个有5个元素的数组。
3、var arr3 = new Array(3); //定义一个空数组
4、var arr4 = new Array(1,2,3,"str1","str2"); //定义一个指定长度为5的数组。
二、数组元素的读和写。
arr[0]; //读取第一个数组元素
arr[0] = "str1"; //改变数组第一个元素的值。
三、稀疏数组。
稀疏数组表示从0 开始不连续索引的数组。通常数组的length代表元素中元素个数,如果数组是稀疏的,length属性值将大于元素的个数。
in 操作符用于检测元素在某位置是否存在元素,注意undefined也算存在。
如:var a1 = [,,];
var a2 = new Array(3);
0 in a1; //true,因为a[0]有undefined元素
0 in a2; //false,a2在索引0处没有元素
四、数组长度
length属性用于标志数组的长度
如:var arr = [1,2,3,4,5];
arr.length; //5 arr数组有5个元素
五、数组元素的添加和删除
push: //在数组的末尾添加一个元素
var arr = [1,2,3];
arr.push(4,5); //arr变为[1,2,3,4,5]
delete: //删除数组某个位置的元素
var arr = [1,2,3]
delete arr[1] //arr变为[1,,3]
1 in arr //false
六、数组的遍历
数组的遍历通常使用for语句来实现
var arr = [1,2,3,4,5];
for(var i = 0.i<arr.length;i++){
if(!a[i]) continue; //跳过null,undefined和不存在的元素
}
七、多维数组
多维数组就是数组里的元素还是数组
如:var arr = [[1,2,3],[,4,5,6]];
arr[1][1]; // 5
八、数组方法
1、 join() 用于将数组中所有元素都转化为字符串 并连接在一起,还可以自定义连接字符
var arr = [1,2,3];
arr.join(); // => "1,2,3"
arr.join("=="); // => "1==2==3";
2、 reverse() 用于将数组元素的顺序颠倒
var arr = [1,2,3];
arr.reverse(); //arr数组变为[3,2,1]
3、 sort(); //用于对数组内的元素进行排序。可以传入一个函数用作排序,如果为空,则按字母顺序排序。undifined元素排到最后
var arr = [1,2,3];
a.sort(function(a,b){
return a-b; //排序标准 负数 0 正数,比较结果先返回小的那个
}); //arr数组的值为[1,2,3] 如果第二个条件变为b-a则结果为[3,2,1]
4、concat() //用于组合一个新的数组,返回一个新的数组
var arr = [1,2,3]
arrnew = arr.concat(4,5) //arrnew数组为[1,2,3,4,5]
arrnew1 = arr.concat([4,5],[6,7]); //arrnew1数组为[1,2,3,4,5,6,7]
5、slice() //用于返回数组指定区间的元素组成的数组,如果输入一个参数,则是从这个参数到结束之间的数组。两个参数就是,第一个参数是起始位置,第二个参数是个数。
var arr = [1,2,3,4,5];
var arr1 = arr.slice(2); //[3,4,5]
var arr2 = arr.slice(1,3); //[2,3]
6、splice() 删除或者添加元素。会改变原数组本身,相当于C#中的引用(ref),原数组是删除的元素组成的数组,返回值是剩下的元素组成的数组。
var arr = [1,2,3,4,5];
var arr1 = arr.splice(1,3); //arr为[2,3,4],返回的数组arr1为[1,5]
var arr2 = [1,2,3,4,5];
var arr3 = arr2.splice(2,0,'a','b'); //从第2位开始删除,删除两个元素,然后从该位置插入'a','b';arr2为[],因为没有删除任何元素,arr3[1,2,'a','b',3,4,5]
7、 push()与pop() 在数组尾部添加或删除一个元素,添加时返回之为最后一个添加的元素,删除时。返回值为删除的那个元素。
push() 函数在数组尾部添加一个元素。
pop() 函数删除数组的最后一个元素。
var arr = [1,2,3]
arr.push(4); //arr为[1,2,3,4]
var arr1 = [1,2,3]
arr.pop(); //arr1为[1,2]
8、unshift()和shift()
shift(),unshift()与push(),pop()只不过,是在数组头部操作而非尾部。
shift() 在数组头部移除一个元素,返回值为被删元素。
unshift() 在数组头部添加一个元素,返回组为最后一个添加的元素。
var arr = [1,2,3];
var a = arr.shift(); //arr变为[2,3] a为1
var arr1 = [1,2,3];
var b = arr1.unshift([4,5]); //arr1变为[4,51,2,3],b为4 返回最后一个添加的,先添加5再添加4
9、toString()和toLocaleString() 将数组转化为字符串
var arr = [1,2,3]
arr.toString(); //生成"1,2,3" 与不使用任何参数的join()是一样的。
二、ECMAScript中的数组方法
1、forEach() forEach() 从头到尾遍历数组,为每个元素调用指定的函数。
var arr = [1, 2, 3, 4, 5];
var sum = 0;
arr.forEach(function (value) {
sum = sum + value;
});
document.write(sum); //sum最终为15
2、map() map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组。
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.map(function (value) {
return value + 1;
});
document.write(arr1.join()); //arr1为[2,3,4,5,6]
3、filter() filter()过滤,返回的元素是调用数组的一个子集,过滤掉不符合条件的元素。
var arr = [1, 2, 3, 4, 5, 6];
var arr1 = arr.filter(function (i) { return i % 2 == 0 });
document.write(arr1.join()); //arr1为[2,4,6]
4、every()和some()
every()当且仅当数组里的所有元素调用判定函数都返回true,它才返回true。第一次返回false就停止遍历。
some()当数组里存在一个元素调用判定函数返回true,它就返回true。第一次返回true就停止遍历。
var arr = [1, 2, 3, 4, 5, 6];
var a = arr.every(function (x) { return x > 3; });
var b = arr.some(function(y){ return y > 3; });
document.write("a的值是:" + a); //a的值是false,a中不是所有元素大于3
document.write("b的值是:" + b); //b的值是true,b中存在元素大于3
5、reduce()和reduceRight()
reduce() 将数组中的元素以指定函数进行组合,生成单个值,第一个参数是简化操作函数,第二个参数是传递给函数的初始值。最后结果是初始值再按组合函数与最后结果计算一次。第二个参数即初始值可以省略,当初始值省略就直接从第一个元素开始计算。
var arr = [1, 2, 3, 4, 5, 6];
var count = arr.reduce(function (x, y) { return x + y; },0);
document.write(count);
reduceRight(); 与reduce()唯一的不同就是它从右至左选择元素进行计算。
6、indexOf()和lastInsexOf()
indexOf() indexOf()从头至少尾返回找到的第一个元素的索引。
lastIndexOf() lastIndexOf()倒序查找元素,返回第一个找到元素的索引。
var arr = [1, 2, 3, 2, 1];
var i = arr.indexOf(2); //从头至尾搜索,第一次遇见2是arr[1],因此返回1
var j = arr.lastIndexOf(2); //从尾至头搜索,第一次遇见2是arr[3],因此返回3
document.write(i + "<br/>");
document.write(j);
7、Array.isArray(); //判定一个对象是否数组对象
var arr = [1, 2, 3];
var str = "str1";
document.write(Array.isArray(arr)); //返回true arr是数组对象
document.write(Array.isArray(str)); //返回false str是字符串,并非数组对象
javascript之数组的更多相关文章
- JavaScript Array数组方法详解
Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
- javascript常用数组算法总结
1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i & ...
- javascript中数组的22种方法
× 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法 ...
- javascript中数组Array的方法
一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...
- 第二章:javascript: 数组
数组是编程世界里最常见的数据结构.任何一种编程语言都包含数组,只是形式稍微有差异.数组是编程语言中的内建类型,通常效率都很高.可以满足不同需求的数据存储,本章将探索javascript中的数组工作原理 ...
- JavaScript操作数组
数组被描述为一个存储元素的线性集合,元素可以通过索引来任意存取. 几乎所有的编程语言都有类似的数据结构,但是Javascript中的数组却略有不同. Javascript中的数组是一种特殊的对象,所以 ...
- Javascript中数组
Javascript中数组 1.什么是数组 所谓的数组就是一组数据的集合,在内存中表现为一段连续的内存地址(保存在堆内存) 2.创建数组的含义 创建数组的目的:就是为了保存更多的数据 3.数组的定义 ...
- JavaScript删除数组重复元素的5个高效算法
之前一段时间一直在准备面试, 因而博客太久没更新: 现在基本知识点都复习完毕, 接下来就分享下 面试的一些常见问题: 去正规的互联网公司笔试.面试有很大的概率会碰到 使用javascript实现数组去 ...
随机推荐
- windows下wchar_t* 转char*
这个在windows下很常见,常用,留个档. 一般用这个函数: size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count ); ...
- ACM1174_爆头解题思路_空间三维坐标求点到直线的距离
/* 爆头 Description gameboy是一个CS高手,他最喜欢的就是扮演警察, 手持M4爆土匪的头.也许这里有人没玩过CS,有必 要介绍一下“爆头”这个术语:所谓爆头,就是子 弹直接命中对 ...
- 【POJ2739】Sum of Consecutive Prime Numbers
简单的素数打表,然后枚举.开始没注意n读到0结束,TLE了回..下次再认真点.A过后讨论里面有个暴力打表过的,给跪了! #include <iostream> #include <c ...
- Unity 脚本函数生命周期
Awake(),一般我们在这里做一些组件的获得,比如使用getcomponent方法. Start(),我们可以在这里给变量赋值. FixUpdate(),固定更新,因为这里得更新速度为固定(可以在T ...
- NavMeshAgent 动态加载障碍物
如果你想让游戏人物绕开一些物体, 这些物体动态生成出来的.只需要给物体添加NavMeshObstacle组件即可 1. 绿色方块添加NavMeshObstacle组件 2. 红色方块没有添加NavMe ...
- iOS面试题集
现在寒假时间在家里面无法敲代码了,但是自己总要找些事情来做,回头想想马上就要开始就业了,所以不免要参加面试,于是便开始了面试题集的浏览和探索,今天下午我看了一部分的面试题感觉还是挺实用的,所以以后还是 ...
- iOS新的旅程之Swift语言的学习
好久都没有来这个熟悉而又陌生的地方啦, 想想已经有两三个月了吧,不过我相信以后还是会经常来的啦,因为忙碌的学习已经过去啦,剩下的就是要好好的总结好好的复习了,好好的熟悉下我们之前学习的知识点,将他们有 ...
- nodejs之简介及安装(一)
@[nodejs|个人学习笔记] nodejs简介 什么是node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. 参考网站 一.nodejs.cn 二 ...
- mvc 5 的过滤器和webapi 过滤器 对应实现的action过滤器区别
asp.net webapi Action过滤器实现这个: #region 程序集 System.Web.Http, Version=5.2.3.0, Culture=neutral, Publi ...
- HDU 5618 Jam's problem again
题意: 三维坐标,对于1个点,找出有多少个点,3个坐标都比该点小! Sample Input 1 4 10 4 7 10 6 6 8 2 5 7 3 10 Sample Output 1 1 0 ...