数据结构与算法JavaScript - 数组
来源:互联网 发布:微商神器软件 编辑:程序博客网 时间:2024/05/29 09:19
数组是计算机编程中最常见的数据结构,是编程语言中的一种内建类型,效率很高。
数组的标准定义是:一个存储元素的线性集合,可以通过索引来任意存取,是一种特殊的对象;
谨记:
- 在js中,数组是一种特殊的对象,所以js中的数组效率不如其它语言中的效率高!
在js中,数组的键的类型可以是字符串,但是length属性不能正确显示长度了。
在js中创建数组的方式有很多种
// 使用[]操作符声明数组var nums = [];// 使用Array构造函数声明数组var nums = new Array();
注:以上两种方式,专家推荐使用[]操作符,效率较高
- 数组的整体操作(数组的复制)
// 浅复制,为_nums增加了一个新的引用,此时改变nums,_nums对应的索引位置的值也会改变;var nums = [1, 2, 3];var _nums = nums;// 深复制function copy(num1, num2) { var i; for(i = 0; i < num1.length; ++i) { num2[i] = num1[i]; }}
数组存取
indexof(name)
如果查找的元素在数组中,则只能返回数组中的第一个匹配的值,如果不在数组中,返回-1;lastIndexof(name)
同上,返回最后一个拼配的值;
数组中的值转化成字符串
join()
toString()
使用以上方法将数组转换成以逗号分隔开字符;
由已有数组创建新数组
concat()
和splice()
方法允许通过已有数组创建新数组;concat([])
方法可以合并多个数组常见一个新数组;splice(起始索引, 截取长度)
方法截取一个数组的子集创建一个新数组;
改变数组内容
push()
将元素添加到数组末尾;unshift
将元素添加到数组开头;pop()
删除数组第一个元素;shift()
删除数组最后一个元素;splice(起始索引,删除元素个数,添加元素)
将元素添加到想要添加到地方
数组排序
reverse()
将数组中的元素顺序进行反转sort()
为数组元素是字符串的数组排序;sort(compare)
为数组元素是数字类型进行排序
function compare(a, b) { return a - b;}
不生成新数组的迭代方法
forEach(callback)
every(callback)
接受一个返回值是布尔类型的函数,对所有元素执行此callback函数,该函数均返回true
则该方法返回true
some(callback)
接受一个返回值是布尔类型的函数,只要一个元素是的此函数返回true
, 此方法返回true
;reduce(add)
将数组中的元素进行累加计算
生成新数组的迭代方法
对数组中所有元素应用map()
filter()
方法,返回一个新数组;map(callback)
与forEach()
相似,区别是map()
返回一个新的数组,该数组是对元素应用某个函数得到的结果filter(callback)
与every()
方法相似,区别是所有均返回true
时,该方法返回新数组,filter()
函数可以对字符串数组进行过滤;
var nums = [1, 2, 3];console.log(nums.reduce(add)); // 6function add(a, b) { return a + b;}
- 创建二维数组
var nums = Array.matrix(2, 3, 0)//[[0, 0, 0], [0, 0, 0]]
- 处理二维数组
处理二维数组一般有两种方法:按列排序和按行排序。两种排序方式均使用一组嵌套的for
循环,外层循环对应行,内层循环对应列。
// 按行访问var grades = [[89, 77, 78], [76, 82, 81], [91, 94, 89]];var total = 0;var average = 0;for (var row = 0; row < grades.length; ++row) { for (var col = 0; col < grades[row].length; ++col) { total += grades[row][col]; } average = total / grades[row].length;e print("student " + parseInt(row + 1) + " average: " + average.toFiexed(2)); total = 0; average = 0.0;}// 按列访问var grades = [[89, 77, 78], [76, 82, 81], [91, 94, 89]];var total = 0;var average = 0;for (var col = 0; col < grades.length; ++col) { for(var row = 0; row < grades[col].length; ++row) { total += grades[row][col]; } average = total / grades[col].length; print("test " + parseInt(col + 1) + " average: " + average.toFiexed(2)); total = 0; average = 0.0;}
0 0
- Javascript数据结构与算法---数组
- 数据结构与算法JavaScript - 数组
- JavaScript数据结构与算法Item1--数组
- 数据结构与算法JavaScript描述 | 数组
- 算法与数据结构 - 数组
- 数据结构与算法:数组
- 数据结构与算法JavaScript
- JavaScript数据结构与算法
- 数据结构与算法(javascript描述)——2. 数组
- 数据结构与算法JavaScript描述[第二章](数组)
- 学习Javascript数据结构与算法系列笔记(一):数组
- 学习JavaScript数据结构与算法(一)——数组
- 数据结构与算法系列---数组
- Java数据结构与算法--数组
- 【数据结构与算法】一 数组
- 数据结构与算法之数组
- 【数据结构与算法01】数组
- 二、数据结构与算法--数组
- 威望数据库解密王 V1.10 简体中文绿色免费版
- 文件基本操作之获取文件基本信息
- 2.兄弟之间的margin-top 和 margin-bottom 会叠压
- Android 快速发布开源项目到jcenter
- 多线程断点续传(二)
- 数据结构与算法JavaScript - 数组
- Xcode及模拟器SDK下载---Bannings
- CentOS7安装配置hadoop2.7.2
- 下一代Android打包工具,100个渠道包只需要10秒钟
- 名字与地址转换 (gethostbyname、getservbyname、getaddrinfo、getnameinfo等)
- 17.1 Replication Configuration
- GDB教程
- SQL查询,为空时忽略该条件
- 欢迎使用CSDN-markdown编辑器