强调 : 关联数组中 length 属性失效!
遍历关联数组 : for in 循环
for(var key in arr){
arr[key]// 当前元素
}
in: 依次取出 arr 中每个元素的下标名称,保存在变量 key 中
连接 : var newArr=(arr2);
将 arr2 拼接到 arr1 之后,返回新数组
强调 : concat 无权修改原数组,只能返回新数组,必须用变量接住拼接的结果。
其实 : .concat( 值 1,值 2,arr2,....);
其中 : .concat 可以打散数组类型的参数为单个值。
截取子数组 :
var subArr=(starti,endi+1);
截取 arr 中 starti 位置开始到 endi 位置结束的子数组。
强调 : 也无权修改原数组,只会复制子数组。
强调 : API 中同时出现开始位置和结束位置时,都是含头不含尾。
变化 : 1. 省略第二个参数,表示截取到结尾。
splice: 删除,插入,替换
删除 : (starti,n)
删除 arr 中 starti 位置开始的 n 个元素
强调 : n 是个数,不考虑含头不含尾
其实 splice 可返回删除的元素组成的临时数组。
var deletes=(starti,n)
插入 : (starti,0, 值 1,值 2,...)
在 arr 的 starti 位置插入值 1,值 2,...
原 starti 位置及其之后的值,都被向后顺移
强调 : 0 表示不删除,只插入新值
不支持打散数组类型参数。
如果传入数组,会形成子数组
vs concat:
concat: 优 : 打散数组类型参数
缺: 只能拼接在开头或结尾
splice: 优 : 可指定插入位置
缺: 不支持打散数组参数
替换 : var deletes=(starti,n, 值 1,值 2,...)
先删除 starti 位置开始的 n 个,再在 starti 位置插入值 1,值 2。
强调 : 删除的元素个数,和插入新值得个数,不必一致。
自定义 : 冒泡, (快速,插入 ) ——手写
原理 :
API: ();
将 arr 中的元素按升序排列
问题 : 默认将所有元素转换为字符串再排列
为什么 : js 中的数组不限制元素的类型
为了保证 sort 方法正常执行,默认将所有元素转为字符串,再比较 unicode 。
所以,默认的 sort 方法,只能排序字符串元素
如果排序非字符串类型的元素 :2 步
1. 自定义比较器函数
比较器函数 : 专门比较两个值大小的函数
如何定义 :
参数 : a,b 分别接收要比较的两个值
返回值 : 如果 a>b,就返回正数
否则,如果 a<b,就返回负数
否则,就返回 0
专门比较两个数字大小的比较器 :
pare(a,b){
return a-b;
}
专门比较两个字符串长度的比较器 :
pare(a,b){
return -;
}
2. 将比较器函数传入 sort 方法作为比较大小的依据。
);
降序 : 颠倒比较器的正负号,可改升序为降序。
补: 其实,函数有第二种创建方法 :
var 函数名 =function(...){...}
何时使用 : 只要不希望被声明提前时
vs function 函数名 (...){...}
只有一点差别 :
function 函数名会被声明提前,
var 函数名 =function 不会被声明提前
2.*****Function
创建 : 3 种:
: function 函数名 (xxx){...}
只有声明方式创建的函数,才会被提前
:
var 函数名 =function(xxx){...}
何时使用 : 只要不希望声明提前时
new:
var 函数名 =
new Function(
"参数 "," 参数 ",...,
"函数体 ")
栈: 一端封闭,另一端进出的数组
FILO
只要希望始终使用最新进入数组的元素时
如何使用 :
1. 结尾出入栈 :
入: ( 值 )
出: var last=();
特点 : 无论出入栈操作,剩余元素的位置不会发生变化。
2. 开头出入栈 :
入: ( 值 )
出: var
javascript 来自淘豆网m.daumloan.com转载请标明出处.