js:数据结构笔记1---数组
JS中数组:
- 只是一种特殊的对象,比其他语言中效率低;
- 属性是用来表示偏移量的索引;在JS中,数字索引在内部被转化为字符串类型(这也是为什么写对象属性的时候可以不叫引号),因为对象中的属性必须是字符串类型;
操作:
- 判断:isArray();
- 复制:
- 浅复制:
var arr1 = arr2;
- 浅复制:
- 深复制:
function copy(arr1) {
var arr2 = [];
for(var i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
return arr2;
}
- 深复制:
- 查找: indexOf/lastIndexOf;
- 由已有的数组创建:concat()/splice();
- 添加:push()/unshift()/splice()/arr[arr.length];
- 删除:pop()/shift()/splice();
- 排序:reverse()/sort()[字典顺序排序];
数字正序排序:
function compare(num1,num2) {
return num1 - num2;
};
字符正序排序:
function compare(str1,str2) {
if(str1 > str2) return 1;
else return -1;
}
字典顺序:0-9A-Za-z - 与字符串:splite(); join()/toString();
- 迭代:
- 不产生新数组:forEach()/every()/some()/reduce()/reduceRight();
- 产生新数组:map()/filter();
数组其他相关:
- 二维数组:
- 初始化:
Array.matrix = function(numrows,numcols,inital) {
var arr = [];
for(var i = 0; i < numrows; ++i) {
var colnums = [];
for(var j = 0; j < numcols; ++j) {
colnums[j] = inital;
}
arr[i] = colnums;
}
rerurn arr;
}
- 对象数组
- 对象中的数组:
js:数据结构笔记1---数组的更多相关文章
- JS数据结构与算法-数组结构
数组结构 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构. 数组通常情况下用于存储一系列同一种数据类型的值. 但在JavaScript里,也可以在数组中保存不同类型的值. 但我们 ...
- js:数据结构笔记12--排序算法(2)
高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版: 首先设置间隔数组,然后按照每个间隔,分别进行排序: 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0] ...
- js:数据结构笔记5--链表
数组: 其他语言的数组缺陷:添加/删除数组麻烦: js数组的缺点:被实现为对象,效率低: 如果要实现随机访问,数组还是更好的选择: 链表: 结构图: 基本代码: function Node (elem ...
- js:数据结构笔记10--图和图算法
图:是由边和定点的集合组成: 按照图的定点对是否有序可以分为:有向图和无向图: 路径:所有顶点都由边连接构成:路径长度为第一个定点到最后一个顶点之间的数量: 环:指向自身的顶点,长度为0:圈:至 ...
- js:数据结构笔记9--二叉树
树:以分层的方式存储数据:节点:根节点,子节点,父节点,叶子节点(没有任何子节点的节点):层:根节点开始0层: 二叉树:每个节点子节点不超过两个:查找快(比链表),添加,删除快(比数组): BST:二 ...
- js:数据结构笔记7--哈希表
哈希表(散列表):通过哈希函数将键值映射为一个字典; 哈希函数:依赖键值的数据类型来构建一个哈希函数: 一个基本的哈希表:(按字符串计算键值) function HashTable() { this. ...
- js:数据结构笔记6--字典
Dictionary类的基础是数组不是对象:字典的主要用途是通过键取值: 基本定义: function Dictionary() { this.dataStore = new Array(); thi ...
- js:数据结构笔记4--队列
队列是一种特殊的列表,数据结构为FIFO: 定义: function Queue() { this.dataStore = []; this.enqueue = enqueue; this.deque ...
- js:数据结构笔记3--栈
栈是一种特殊的列表,数据结构为LIFO: 定义: function Stack() { this.dataStore = []; this.top = 0; this.push = push; thi ...
随机推荐
- Object学习笔记
<script type="text/javascript"> function forEach(o){ var html =""; for(var ...
- 繁华模拟赛 vicent的字符串
#include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...
- PHP: Local 和 Global 作用域
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问. 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问. 下面的例子测试了带有局部和全局作用域的变量: 在上例中,有 ...
- php面试题之五——MySQL数据库(基础部分)
五.MySQL数据库 mysql_num_rows() mysql_affected_rows() 这两个函数都作用于 mysql_query($query)操作的结果,mysql_num_rows( ...
- 入侵检测课设之Libnids开发包
Libnids开发包介绍 Libnids是一个用于网络入侵检测开发的专业编程接口,它使用了Libpcap所以它具有捕获数据包的功能.同时,Libnids提供了TCP数据流重组功能,所以对于分析 ...
- Tornaod框架
Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效 ...
- Rehashing
The size of the hash table is not determinate at the very beginning. If the total size of keys is to ...
- EtherCAT数据帧结构
EtherCAT数据直接使用以太网数据帧(以太网帧解释http://blog.chinaunix.net/uid-23080322-id-118440.html)传输,使用的帧类型为0x88A4.Et ...
- Java for LeetCode 061 Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given ...
- image warping