menu
more_vert

JS7

作者:dayu

1. ***数组:

API:

拼接和选取

修改

翻转

****排序: 自定义排序算法: 冒泡排序

sort()

1. 拼接和选取:

拼接: 将其它元素或其它数组拼接到当前数组末尾,返回新数组

var newArr=arr1.concat(值1,值2,arr2,......)

强调: 1. 无权修改原对象,只能返回新对象

2. 打散传入的数组参数——珍贵

选取: 复制原数组中指定位置的元素组成新数组

var subArr=arr1.slice(starti,endi+1);

强调: 1. 无权修改原对象,只能返回新对象

2. 规律: 所有两个参数都是下标的API,都含头不含尾

简写: 1. 省略第二个参数: arr1.slice(starti)

从starti位置一直选取到结尾

2. 不写参数: arr1.slice()——复制整个数组中所有元素

3. 如果离结尾近:

arr1.slice(arr1.length-n,arr1.length-m+1)

选择倒数第n到倒数第m的元素

arr1.slice(-n,-m+1);

2. 修改数组splice: 删除,插入,替换

删除: arr.splice(starti,n) 从arr中starti开始,删除n个元素

强调: 1. 不遵循含头不含尾

2. 直接修改原数组

3. starti也支持负数参数,表示倒数第n个位置

简写: 省略第二个参数: arr.splice(starti) 删除starti后所有

返回值: var deletes=arr.splice(starti,n)

返回被删除的元素组成的临时新数组

插入: arr.splice(starti,0,值1,值2,...)

在arr中starti位置插入: 值1,值2,...

原starti位置及其之后的值,向后顺移

强调: 不能打散数组参数

替换: arr.splice(starti,n,值1,值2,...)

在arr中先删除starti位置后的n个元素

再在starti位置插入新元素

强调: 删除的元素个数和插入的新元素个数不必一样

数组自动调整length

3. 翻转数组: arr.reverse();

4. ****排序:

自定义排序算法: 冒泡,快速,插入

冒泡: 原理:

1. ***数组:

排序:

栈和队列:

二维数组:

2. ***String

1. 排序:

自定义排序: 冒泡

排序API: arr.sort();

大问题: 默认将所有元素转为字符串再按字符串排列

只能对字符串类型的元素正确排序

解决: 自定义比较规则:

比较器函数: 专门比较任意两值大小的函数:

要求: 两个参数: a,b

返回值: 如果a>b,就返回正数

如果a<b,就返回负数

如果a=b,就返回0

最简单的数字比较器函数:

function compare(a,b){return a-b;}

如何使用: 将比较器函数名作为参数传入sort函数中

arr.sort(compare) //强调: 不要加()

compare函数作为参数传入sort中,被sort反复调用

降序: 颠倒比较器函数的正负号,可改升序为降序

最简单的数字降序比较器函数:

function compare(a,b){return b-a;}

2. 栈和队列: js中没有专门的栈和队列类型

一切栈和队列都是用普通数组模拟的

栈: 一端封闭,只能从另一端进出的数组

特点: FILO

何时: 今后只要希望始终使用最新的元素时

如何:

1. 从结尾出入栈:

入: arr.push(值) => arr[arr.length]=值

出: var last=arr.pop()

特点: 每次出入栈,都不影响其他元素的位置

2. 从开头出入栈:

入: arr.unshift(值)

出: var first=arr.shift()

特点: 每次出入栈,其它元素位置都会依次顺移

队列: 只能从一端进入,从另一端出的数组

特点: FIFO

何时: 只要希望按先后顺序使用数组中的元素时

1. 结尾入: 入: arr.push(值)

2. 开头出: var first=arr.shift()

3. 二维数组:

什么是: 数组中的元素又引用了另一个子数组

何时: 1. 保存横行竖列的二维数据结构

2. 对一组数据,再进行细致分类时

如何:

创建: 2种:

1. 创建数组时,还不知道子数组的内容:

var arr=[];

arr[0]=[值1,值2,...];

arr[1]=[值1,值2,...];

2. 创建数组同时初始化元素:

var arr=[

[值1,值2,...],

[值1,值2,...],

...

]

访问: arr[r][c]->用法和普通数组元素的用法完全一样

强调: 二维数组,行下标r不能越界!——报错!

遍历: 外层循环控制行,内层循环控制列

for(var r=0; r<arr.length; r++){//遍历每一行

for(var c=0;c<arr[r].length;c++){//遍历第r行中每一列

arr[r][c]//当前元素

}

}

JS 7

原文地址:http://www.cnblogs.com/Hale-Proh/p/7199622.html



Processed Time:0.22806596755981

_REQUEST:
Array
(
    [0] => read
    [1] => 95756
)
_SESSION:
Array
(
    [fid] => 4
)