数组方法整理
创建Array对象
var arr = [];
new Array();
new Array(size);
new Array(element0,element1,...,elementn);
//没有使用参数时,返回的数组为空,length字段为0
//参数size是期望的数组元素个数,返回的数组,length字段将被设为size的值。
//element0,..,是参数列表,传给构造函数Array()时,新创建的数组的初始化为这些值,length字段会被设置为参数的个数
数组转换为字符串(toString())
//将数组转换为数组值(逗号分割)的字符串
var color = ["red","blue","pink"]
console.log(color.toString()); //red,blue.pink
数组所有元素结合为一个字符串(join())
//和toString()类似,不过可以自己规定分割符
var color = ["red","blue","pink"]
console.log(color.join("-")); //red-blue-pink
//分割符可以是*、&、%,但是都要加引号""
数组末尾添加元素或删除元素(push()和pop())
//push()方法在数组末尾添加一个新的元素,并返回修改后的长度
var arr = [1,2]
console.log(arr.push(3)); //3,(返回数组长度)
console.log(arr); //[1,2,3]
arr.push("red","pink"); //字符串要加引号
console.log(arr); //[1,2,3,"red","pink"]
arr.push(2+2,2+3) //还能进行简单运算
console.log(arr); // //[1,2,3,"red","pink",4,5]
//pop()方法从数组中删除最后一个元素,并返回被删除的值,一次只能删除一个
console.log(arr.pop()); //5
console.log(arr.pop()); //4
console.log(arr); //[1,2,3,"red","pink"]
数组开头添加元素或删除元素 (shift()和unshift())
//unshift()方法将参数添加到数组开头,并返回修改后数组的长度
var arr = [1,2]
console.log(arr.unshift(0)); //3,(返回数组长度)
console.log(arr); //[0,1,2]
//...和上面push()方法差不多
//shift()删除数组第一项,并返回删除元素的值,如果数组为空则返回undefined
var arr = [1,2]
console.log(arr.shift()); //2,(返回数组长度)
console.log(arr); //[1,2]
更改元素
- 通过索引来更改元素
//索引号以0开始,[0]是第一个数组元素,[1]是第二个数组,[2]是第三个数组...
var color = ["red","black","blue"]
color[0]="orange"
console.log(color); //["orange","black","blue"]
- 通过length添加元素
//length表示数组长度,而索引号一直比length小1
var color = ["red","black","blue"]
color[color.length]="orange"
console.log(color); //["red","black","blue","orange"]
拼接数组(splice())
//splice()方法
//第一个参数(2)定义了应该添加新元素的位置,索引位置,就是开始位置,包括当前索引的值
//第二个参数(0)定义应该删除多少个元素
//其余参数("skyblue","orange")定义要添加的元素,可以是多个
var color = ["red","black","blue"]
color.splice(2,0,"skyblue","orange")
console.log(color); //["red","black","skyblue","orange","blue"]
//splice()方法还可以用来删除元素
var color = ["red","black","blue"]
color.splice(1,2);
console.log(color); //["red"]
合并数组(concat())
//concat()方法不会更改原数组,它总是返回一个新数组
//可以使用任意数量的数组作为参数,用逗号分割
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [7,8,9];
var myArr = arr1.concat(arr2,arr3);
console.log(myArr); //[1,2,3,4,5,6,7,8,9]
裁剪数组(slice())
//slice()方法创建新数组,它不会从源数组中删除任何元素
//slice()方法接收两个参数,比如(1,3)
//截取片段从索引号1开始,直到结束参数(不包括结束参数这个数据)为止
//如果参数出现负值,用负值加上数组长度的值
var color = ["red","black","blue"]
var cut = color.slice(1,3);
console.log(cut); //["black","blue"]
slice()不接收可以直接copy整个数组,且不会改变原数组
var color = ["red","black","blue"]
var cut1 = color.slice();
console.log(cut1); //["red", "black", "blue"]
数组替换(fill())
array.fill(value,start,end);
//value 必要,填充的值
//start 可选,开始填充的位置(索引号的值开始)
//end 可选,停止填充的位置(默认为array.length)
var color = ["red","blue","black","skyblue","green"]
color.fill("pink",2,5);
console.log(color); //["red","blue","pink","pink","pink"]
数组排序(sort())
//sort()方法以字母顺序对数组进行排序
var arr = ["a","d","b","c","e"]
console.log(arr.sort()); //["a","b","c","d","e"]
反转数组(reverse())
reverse()方法反转数组中的元素,可以使用它以降序对数组进行排序
var arr = ["a","b","c"]
arr.reverse(); //["c","b","a"]
数字排序 (sort())
var arr = [1,66,28,99,100]
arr.sort(function(a,b){return a-b}); //[1,28,66,99,100]
//sort会把两个数据传入,如果结果为负数就换位
Math方法
使用Math.max.apply来查找数组中的最高值
var var arr = [3,56,22,100]
Math.max.apply(null,arr); //100
//使用Math.min.apply查找数组中的最低值
var var arr = [3,56,22,100]
Math.min.apply(null,arr); //3
JavaScript数组迭代方式
forEach()方法
为每个数组元素调用一次函数(回调函数)
//forEach的回调函数接收3个参数,不会返回值
//第一个参数是数组当前元素 (必需) item
//第二个参数是当前元素的索引号 index
//第三个参数当前元素所属的数组对象 array
var arr = [1,2,3]
arr.forEach(item =>{
item*2
})
console.log(arr) //[1,2,3]
不会改变原数组,只会遍历给每一个元素执行回调函数
map()方法
map()方法通过对每个数组元素执行函数来创建新数组
//map()方法和forEach()方法参数一样,但map()返回每次函数调用的结果组成的数组
var arr = [1,2,3]
arr.map(function(item,index,array){
return item*2
}); //返回的结果是[2,4,6]
//也可以写成箭头函数,当回调函数只使用item参数是,其他参数可以省略不写
arr.map(item => item*2); //[2,4,6]
filter()方法
filter()方法创建一个包含通过测试的数组元素的新数组
参数和前面forEach()方法参数一样,但filter()方法返回满足条件的的元素创建一个新数组
var numbers = [5,16,20,25,50]
numbers.filter(function(item){retrun item>18});
//[20,25,50]返回大于18的元素组成的新数组
reduce()方法
语法:arr.reduce(callback,[initialValue])
// callback (执行数组中每个值的函数,包含四个参数)
// 1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
// 2、currentValue (数组中当前被处理的元素)
// 3、index (当前元素在数组中的索引)
// 4、array (调用 reduce 的数组)
// initialValue (作为第一次调用 callback 的第一个参数。)
var arr = [10,20,20,30,30,55]
arr.reduce((pre,cur) =>{
if(!pre.includes(cur)){
pre.push(cur);
}
return pre;
},[]); //[10,20,30,55],初始值为空数组,可以去重
every()方法
every()方法判断数组中的每一项都是否满足条件,只有所有项都满足条件,才会返回true
var arr = [1,2,3,4,5];
var arr2 = arr.every(function(x){return x<10});
console.log(arr2); //true
var arr3 = arr.every(function(x){return x<3});
console.log(arr3); //false
some()方法
some()方法判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true
var arr = [1,2,3,4,5];
var arr2 = arr.some(function(x){return x<3});
console.log(arr2); //true
var arr3 = arr.some(function(x){return x<1});
console.log(arr3); //false
indexOf()方法
indexOf()方法在数组中搜索元素值并返回其位置(索引号)
//indexOf()接受两个参数
//item,必需,要检测搜索的项目
//start,可选,从哪里开始搜索,负值从结尾开始,并搜索到结尾
如果没找到项目,返回-1;如果多次出现,返回第一次出现的索引
var arr = [1,2,3]
console.log(arr.indexOf(3)); //2,索引位置
console.log(arr.indexOf(10)); //-1,查找不到
lastindexOf()方法
Array.lastIndexOf()与Array.indexOf()类似,但是从数组结尾开始搜索
find()方法
find()方法返回通过测试函数第一个数组元素的值
var arr = [3,2,6,20,19,69]
var first = arr.find(function(item){return item>10});
console.log(first); //20
findIndex()方法
findIndex()方法返回第一个元素的索引号
var arr = [3,2,6,20,19,69]
var first = arr.findIndex(function(item){return item>10});
console.log(first); //3