JavaScript几种操作值的集合的对象:
Array对象:
1 | 2 | 3 | 4 | 5 | 6 | …… |
a | b | b | d | e | f | …… |
*使用索引(位置)来管理;
**数值可重复
操作方法:
使用字面量的形式
var ary=new ['haha','xixi','hehe'];
使用构造函数的形式:
var ary=new Array('xixi','haha','hehe');//使用指定函数生成数组;
var new Array(); //生成空的数组;
var ary=new Array(10); //创建一个10个位置的数组(0~9)
Array的主要成员:
分类 | 成员 | 概述 |
基本 | length | 数组的大笑 |
isArray(obj) | 指定对象是否为数组(静态方法) | |
toString() | 转换为[元素,元素…]形式的字符串 | |
toLocaleString() | 将数组转换你为字符串(分隔字符根据语言变化) | |
indexOf(elm,[index]) | 获取和指定元素匹配的第一个元素的键值(index=检索的开始位置) | |
lastIndexOf(elm,[index]) | 获取和指定元素匹配的最后一个元素的键值(index=检索的开始位置) | |
entries() | 获取所有的键/值 | |
keys() | 获取所有的键 | |
values() | 获取所有的值 | |
加工 | concat(ary) | 合并数组 |
join(del) | 将数组的元素使用分隔符del连接 | |
slice(start,end) | 取出第start+1个~第end个元素 | |
*splice(start,cnt[,rep...]]) | 使用rep…替换数组哪第start+1个元素~第end个元素 | |
from(alike[map[,this]]) | 将类数组对象、课枚举对象转换为数组(静态方法) | |
of(e1,...) | 将可变参数转换为数组(静态方法) | |
*copyWithin(target,start[end]) | 将第start+1个~第end个元素复制到从第target+1开始的位置(元素数量和原来数组相同) | |
*fill(val[,start[end]]) | 使用val替换数组内第start+1个~第end个元素 | |
添加/删除 | *pop() | 获取数组末尾的元素并删除 |
*push(data1[,data2,...]) | 在数组末尾添加元素 | |
*shift() | 获取数组开头的元素并删除 | |
*unshift(data1[,data2,...]) | 在数组开头添加指定元素 | |
排序 | *reverse() | 数组的元素反转 |
*sort([fnc]) | 将元素生序排列 | |
回调 | forEach(fnc[,that]) | 使用fnc函数依次处理组内元素 |
map(fnc[,that]) | 使用fnc函数一次加工组内元素 | |
every(fnc[,that]) | 数组内的所有元素是否都和条件fnc一致 | |
some(fnc[,that]) | 数组内的所有元素是否存在和条件fnc一致 | |
filter(fnc[,that]) | 生成和条件fnc一致的元素组 | |
find(fnc[,that]) | 获取函数fnc第一次返回true的元素 | |
find(Index(fnc[,that]) | 获取函数fnc第一次返回true的“索引” | |
reduce(fnc[,init]) | 使用函数fnc从左到右处理相邻两个元素并返回单个值(init=初始值) | |
reduceRight(fnc[,init]) | 使用函数fnc从右到左处理相邻两个元素并返回单个值 |
带*号的为深拷贝方法:通过执行这个方法会影响对象(数组)本身的方法。
push()、pop()、shift()、unshift()的方法可以将数组作为堆栈或者队列使用。
Map对象:
a | b | c | d | e | ... |
1 | 2 | 3 | 4 | 5 | ... |
*使用键/值的组合来管理;
**键值不可以重复
成员 | 概述 |
size | 元素个数 |
set(key,val) | 添加键/值对应的元素,如果重复则覆盖 |
get(key) | 获取指定key的元素 |
has(key) | 判断key的元素是否存在 |
delet(key) | 删除指定key的元素 |
clear() | 删除所有元素 |
values() | 获取所有的值 |
entries() | 获取所有的key/值 |
forEach(fnc[,that]) | 使用函数fnc依次处理Map内的元素 |
let m=new Map();
m.set('dog','wowo');
m.set('cat','meow');
m.set('mouse','gigi');
console.log(m.size);
console.log(m.get('dog'));
console.log(m.has('cat'));
for (let key of m.keys()){
console.log(key);
}
for (let value of m.values()){
console.log(value);
}
for (let[key,value]of m){
console.log(value);
}
m.delete('dog');
console.log(m.size);
m.clear();
console.log(m.size);
Set对象:
*没有顺序;
**值不可以重复
成员 | 概述 |
size | 元素个数 |
add(val) | 添加指定的值 |
has(val) | 判断指定值是否存在 |
delete(val) | 删除指定的元素 |
clear() | 删除所有元素 |
entries() | 获取所有的key/值 |
value() | 获取所有的值 |
forEach(fnc[,that] | 使用指定的函数处理Set的各个值 |
let s=new Set();
s.add(10);
s.add(5);
s.add(100);
s.add(50);
s.add(5); //相同的值会被忽略;
console.log(s.has(100));
console.log(s.size);
for(let val of s.value){
console.log(val);
}
for(let val of s){
console.log(val);
}
s.delete(100);
console.log(s.size);
s.clear();
console.log(s.size);