7
数组索引仅仅是对象属性名的一种特殊类型
a=new Array()
[]
a[-3.15]="i m -3.15"
"i m -3.15"
a
[]
a[-3.15]
"i m -3.15"
a[‘-3.15‘]
"i m -3.15"
a[3]=function(){ console.log(‘this is a function!‘) }
function (){ console.log(‘this is a function!‘) }
a[3]
function (){ console.log(‘this is a function!‘) }
a[3]()
this is a function!
a[‘3‘]()
7.3 稀疏数组 就是包含从0开始的不连续索引的数组。如果是稀疏数组,length属性值大于元素的个数。可以用Array()构造函数或简单的指定数组的索引值大于当前数组长度来创建稀疏数组
7.4 数组长度
数组创建后 设置数组长度 将会删除 或增加相应的元素
a = [1,2,3,4,5];
a.length = 3; //a 为 [1,2,3]
可以用Object.defineProperty()让数组的length属性变成只读,将会禁止改变数组长度
a = [1,2,3];
Object.defineProperty(a,‘length‘,{writable:false});
a.length=0; //a 不会改变
7.6 数组遍历
for()
data.foreach()
data.forEach(function(x){
console.log(x)
});
7.7 多维数组
Javascript不支持真正的多维数组,可以用数组的数组来近似。只要简单的使用两次[]操作符即可。
a=[];a[1]=[];
7.8 数组方法
Array.join() 方式将数组的所有元素转化为字符串连接在一起,返回生成后的字符串
var a=[1,2,3];
a.join() // ‘1,2,3‘
a.join(‘‘) // ‘123‘
a.join(‘ ‘)// ‘1 2 3‘
a.join(‘-‘)// ‘1-2-3‘
Array.reverse() 返回逆序数组
sort 以字母表顺序排序返回
concat() 连接本身和参数 如果参数是数组将连接数组
slice() 返回定义的数组的位置 -1代表最后一个元素
splice() 插入或删除元素
第一个参数代表从第几个元素开始,第二个参数代表删除几个 随后的是指定插入到数组中的元素 返回删除的元素 元素本身发生改变
var a = [1,2,3,4];
b = a.splice(2,1,‘a‘,‘b‘);
//b = [3]
//a=[1, 2, "a", "b", 4]
push 把元素添加到数组最后并返回数组的新长度
pop 删除元素最后一个元素并返回被删除的值
unshift 在数组的开头插入新元素 并返回新长度
shift 删除数组的第一个元素并将删除的值返回
toString 和join 不使用参数一样
toLocaleString 不懂
forEach 从头到尾遍历数组,为每个元素调用指定函数 无法终止便利
map 将调用每一个元素传给指定的函数并返回一个数组 如果是稀疏数组 也会是相同方式的稀疏数组
filter 返回的数组元素是调用的数组的一个自己 传递的函数是用来逻辑判断的 如果返回值为true或能转化为true的值 那么传递给判定函数的元素就是这个自己的成员
var a = [1,2,3,4,5,6];
a.filter(function(x){return x < 3}) // [1,2]
filter 会跳过稀疏数组中缺少的元素 返回总是稠密的 可以用它来压缩稀疏数组 a.filter(function(x){return true})
every 和 some 将元素应用指定的函数进行判定 返回布尔值
every 调用判定函数 当所有元素传递给判定函数返回true 它才会返回true
some 当有函数返回true 它返回出 所有函数返回false 则会返回false
reduce reduceRight 使用指定的函数将数组进行组合 生成单个值
var a= [1,2,3,4,5]
var sum = a.reduce(function(x,y){return x+y},0)
如果不设定第二个参数 那么 传入指定函数的前两个参数将是数组的前两个元素的值
reduceRight 和reduce工作原理一样 不同的是从数组索引的高到低处理数组
indexOf 所有真格数组中具有给定值的元素 返回找到的第一个元素的索引 第二个参数可选 是从数组中这个索引开始 没有找到返回-1 indexOf从头到尾 lastIndexOf 从后到前
找出所有匹配的元素的索引
function findall(a,x){
var results = [];
len = a.length,
pos = 0;
while(pos < len){
pos = a.indexOf(x,pos);
if (pos === -1) break;
results.push(pos);
pos = pos + 1;
}
return results;
}
7.1 数组类型
在 es5中可以这么写
Array.isArray();
instanceof Array 不可靠
var isArray = Function.isArray || function(o){
return typeof o === ‘object‘ &&
Object.prototype.toString.call(o) === ‘[object Array]‘;
};
7.12 作为数组的字符串
var s = ‘test‘;
s.charAt(0);
s[1];