合并数组
1 | let ary = [1, 2, 3, 4]; |
数组内部移动复制
1 | let ary = [1, 2, 3, 4, 5]; |
查找元素基本使用
- ary.indexOf 和 ary.lastIndexOf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ary.indexOf(2);//寻找2的下标值
//return 1
ary.indexOf(88);//寻找 88 的下标值,找不到返回-1
// -1
let a=[1,1,1,2];
a.lastIndexOf(1);//返回下标值2,也就是说查找值为一的最后出现的下标
ary.lastIndexOf(3,-4);//与 indexOf 正好相反
//-1
ary.lastIndexOf(3,0);//与 indexOf 正好相反
//-1
ary.lastIndexOf(3,2);//与 indexOf 正好相反
//2
数组中是否拥有某元素
1 | 方式一:if(ary.indexOf(2)!=-1)//有 |
更加高效的元素查找
问题:当我们想要查找数组中是否存在一个引用类型时,用 includes 行吗?:NO
1 | let a = [{ name: "w" }, { name: "s" }]; |
那么如何检索引用类型?
检索引用类型:find(function) & findIndex
1 | let a = [{ name: "w" }, { name: "s" }]; |
- find 原理
1
2
3
4
5
6function Myfind (callback){ for(let i of ary){if(callback(i)) return i;}//return undefined;
写在原型上:
Array.prototype.MyFind = function (callback){ for(let i of this){if(callback(i)) return i;}return undefined;
}forEach循环数组
1 | let a = [{name:'aa'},{name:2}] |
every 和 some
some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值
1 |
|
1 | let a = [10,12,11]; |
filter
1 | let a = [10,12,11]; |
map
1 | /* map映射数组:数组中的元素如果是值类型,则不会被影响;若是引用类型则会被影响 */ |
reduce
1 | let a = [1,2,3,4,5]; |