定义数组:
var arr = [];
//或者
var arr = new Array();
//ES6
const arr = [];
const arr = new Array();
检测数组:
// 1.instanceof 检测
console.log(arr instanceof Array);//true arr对象的原型链上能找到Array
// 注意:此处不能用 typeof typeof返回的是数据类型的字符串表达 不能判断null 和 数组 typeof
arr 返回的是object
// 2.constructor 检测
console.log(arr.constructor === Array);//true
//constructor可以被重写 例如:
var str = new String();
str.constructor = Array;
console.log(str.constructor === Array);// true
// 3.Object.prototype.toString.call() 检测
// 此方法可以确保检测数组
console.log(Object.prototype.toString.call(arr));//[object Array]
// 4.ES6 isArray()
console.log(Array.isArray([]));//true
操作数组:
1.indexOf()
Array可以使用indexOf()来返回指定元素的索引,若没有找到返回-1;
var arr = [1,2,3,4];
console.log(arr.indexOf(1));// 0
console.log(arr.indexOf(5));// -1
2.slice(star,end)
slice()截取数组部分元素然后返回一个新数组;
var arr = ['a','s','d','f','g'];
console.log(arr.slice(0,3));//['a','s','d'] 从索引为0开始,到索引3结束,但不包括索引3
console.log(arr.slice(3));//['f','g'] 从索引3开始到结束
3.push()
push() 向数组的末尾添加若干元素 返回新的长度 返回值为Number;
var arr = [1,2,3,4,5];
console.log(arr.push(6,7,8));// 8
4.pop()
pop()把数组最后一个元素删掉,返回删除的元素;
var arr = [1,2,3,4];
console.log(arr.pop());// 4
5.unshift()
unshift()往数组的头部添加若干元素 返回新的长度
var arr = [1,2,3,4];
console.log(arr.unshift(1));// 5
6.shift()
shift() 把数组的第一个元素删掉 返回第一个元素
var arr = [1,2,3,4];
console.log(arr.shift());//1
7.sort()
sort()用于数组元素进行排序,默认按字母升序排序 返回一个排序后的新数组
var arr = ['a','s','d','f'];
console.log(arr.sort());// ['a','d','f','s']
var arr = [1,4,2,5];
console.log(arr.sort());// [1,2,4,5]
// sort(function(a,b){return a-b}) 正序
// sort(function(a,b){return b-a}) 倒序
8.reverse()
reverse()用于颠倒数组中元素的顺序
8.reverse()
// reverse()用于颠倒数组中元素的顺序
9.concat()
concat()用于连接两个或多个数组 返回一个新的数组;
var arr = [1,2,3,4];
var arr2 = ['a','s'];
console.log(arr.concat(arr2));// [1,2,3,4,'a','s']
10.join()
join() 把数组中的所有元素转换为字符串 返回字符串
var arr = ['a','s','d','f'];
console.log(arr.join());// a,s,d,f
console.log(arr.join('-'));// a-s-d-f
11.splice()
splice()用于插入,删除,替换数组元素 返回删除元素的数组 若没有删除 返回[]
语法 array.splice(index,howmany,item1......itemX);
index 从何处开始添加\删除 howmany应该删除几个元素 item 添加到数组的新元素
var arr = [1,2,3,4];
console.log(arr.splice(1,2));//从索引1开始 删除两个元素2和3 返回删除的元素 [2,3]
console.log(arr.splice(2,0,'a','s'));// 从索引2开始 删除0个 添加a和s 返回[]
ES6的一些方法:
12.every() 返回布尔值
every() 检测数组所有元素是否符合指定条件,若有一个不满足 返回false 且不继续不会继续检测 若满足 返回true
语法:array.every(function(currentValue,index,arr), thisValue)
const arrr = [1,3,5,7];
console.log(arrr.every((item,index,array) => item > 0));//true
console.log(arrr.every((item,index,array) => item > 5));// false
13.filter() 返回新的数组
filter()过滤操作 筛选符合条件的元素 若为true 返回组成新的数组
语法:array.filter(function(currentValue,index,arr), thisValue)
const arr3 = [1,2,3,4,5];
console.log(arr3.filter(item => item%2===0));// [2,4]
console.log(arr3.filter(item => item%2));// [1,3,5]
14.find()
find() 返回第一个符合条件的元素 若没有符合条件的返回undefined
语法:array.find(function(currentValue, index, arr),thisValue)
const arr4 = [1,2,3,4,5];
console.log(arr4.find(item => item>2));// 3
15.findIndex()
findIndex() 返回第一个符合条件的元素的索引 若没有返回-1
语法:array.find(function(currentValue, index, arr),thisValue)
const arr5 = [1,2,3,4,5];
console.log(arr5.findIndex(item => item>2));// 2
16.includes()
includes() 判断一个数组是否包含指定的元素 若包含返回true 否则返回false
语法:arr.includes(searchElement, fromIndex) searchElement 要查找的元素 formIndex 开始查找的索引值
const arr6 = [1,2,3,4,5];
console.log(arr6.includes(2));// true;
console.log(arr6.includes(2,2));// false
17.map()
map() 映射操作,对原数组每个元素进行处理,并返回新的数组
语法:array.map(function(currentValue,index,arr), thisValue)
const arr7 = [{name:'a',age:12},{name:'s',age:18}];
console.log(arr7.map(item => item.name + 'c'));//['ac','sc']
18.reduce()
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
注意: reduce() 对于空数组是不会执行回调函数的
语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
const arr8 = [1,2,3,4,5]
console.log(arr8.reduce((total,currentVal) => total + currentVal));// 15
19.some()
some() 检测数组中的元素是否满足指定条件 若有一个满足 即返回true 并且不再继续执行检测 若没有满足的返回false
与every不同的是,这里只要某一个元素通过测试,即返回true
const arr9 = [1,2,3,4,5];
console.log(arr9.some(item => item > 4));//true 若有一个满足 返回true
console.log(arr9.some(item => item === 0));//false
console.log(arr9.every(item => item < 2));//false 若有一个不满足返回false
20.forEach()
forEach()遍历 循环 forEach会遍历数组, 没有返回值, 不允许在循环体内写return, 不会改变原来数组的内容.
语法:array.forEach(function(currentValue, index, arr), thisValue)
[1,2,3,4].forEach(console.log)
forEach
方法中的function
回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身。
欢迎补充 指正!