一、检测数组方法
console.log(arr instanceof Array); //true 主要是判断某个实例(arr)是否属于某个对象。
console.log(arr.constructor == Array); //true 判断实例(arr)的构造函数是否等于某个对象。
console.log(Array.isArray(arr)); //true ES5新增数组方法,判断数组是不是数组。
console.log(Object.getPrototypeOf(arr) == Array.prototype); //true Object.getPrototypeOf()方法返回指定对象的原型,然后和Array的原型对比。
console.log(Array.prototype.isPrototypeOf(arr)); //true Array.prototype表示Array的构造函数的原型;isPrototypeOf()方法可以判断一个对象是否存在于另一个对象的原型链上。
console.log(Object.prototype.toString.call(arr) == '[object Array]'); //true 把对象转化成字符串和一个已知的对象进行对比。
二、非数组转数组的方法
1、伪书组转数组 [ ].slice.call(obj) Array.from(obj) 拓展运算符
2、字符串转数组
console.log(str.split(''));
console.log([...str]);
console.log(Array.from(str));
3、对象转数组
console.log(Object.keys(obj));
console.log(Object.values(obj));
console.log(Object.entries(obj));
三、数组内置方法
1、增
arr.unshift(4)//前加
arr.push(4)//后加
arr=arr1.concat(arr2) //合并
2、减
arr.shift()//前删
arr.pop()//后删
arr.splice("删除项下标"//开始的位置,"删除个数") //挑着删
arr=arr.slice(开始的位置,结束的位置) //挑着删
3、改
(1)、改变顺序
arr.reverse()
arr.sort(a,b=>{b-a})
(2)、 多维转一维
reduce+递归
(3)、 性质改变
数组->字符串 arr=arr.toString() arr=arr.join()
数组转对象 arr=new Set(arr)
(4)去重
arr=[...new Set(arr)]
4、查
查看符合条件的状态
console.log(arr.every(item=>{})); //false 同真为真
console.log(arr.some(item=>{})); //false 一真为真
console.log(arr.includes(1)); //true
console.log(arr.map(item=>{return item==1})); //[true, false, false, false]
查看符合条件的项
console.log(arr.filter(function (item, index) {return item > 1;}));
console.log(arr.find(item=>{return item>2}));//1
查看符合条件的项的下标
console.log(arr.indexOf(item=>{}));//-1
console.log(arr.findIndex(item=>{return item>2}));//-1