创建数组的方法:
- 1.使用Array构造函数
var Array1 = new Array(); // 空数组
var Array2 = new Array(10); // 10个长度的数组
var Array3 = new Array(1,2,3); // 包含1,2,3的元素的数组
- 2.字面量方式
var Array = []; // 空数组
var Array = [1,2,3]; // 包含1,2,3的元素的数组
- 3.ES6新增 Array.of() :与Array构造方式类似,不同之处,当传入只有一个参数的时候,会被当做数据的唯一项,而不是length的值
var arr = Array.of(2);
console.log(arr.length); //1
console.log(arr[0]); //2
可以通过length改变数组的项:length
var arr = [1,2,3,4];
console.log(arr.length); //4
arr.length = 2;
console.log(arr); //[1,2]
判断是否为数组:instanceof,isArray
var arr = [1,2,3];
console.log(arr instanceof Array); // ES3 不适用当一个页面有多个框架:存在多个全局执行环境
console.log(Array.isArray(arr)); // ES5
转换方式:toString, valueOf, toLocalString, join
var myInformation = ['zjf','boy','student'];
console.log(myInformation.toString()); // 转换为字符串
console.log(myInformation.valueOf()); // 返回数组对象的原始值
console.log(myInformation.toLocaleString()); //把数组转换为本地数组 调用的每一项是toLocaleString()方法
console.log(myInformation.join('|')); // 接受一个字符串作为分隔符
concat,合并两个数组
var arr = [1,2,3]
let array = arr.concat(4,5,6,7) 或 arr.concat([4,5,6,7])
console.log(array) // [1, 2, 3, 4, 5, 6, 7]
将非数组对象转化为数组对象
- 1.ES5:新建一个数组,用push的方式将非数组对象的每一个元素复制添加给新数组,返回新数组
- 2.ES6:Array.from()
- 3.split()方法根据设置的分隔符,将字符串转化为数组
var Str = "12345";
var arr = Array.from(Str);
console.log(arr); //[1,2,3,4,5]
可以用来深复制一维数组,多维需另写代码
var arr = Array.from([1,2,3,4])
映射转换:传入映射函数(value) => value +1,就会遍历每一个元素,都加上1
function translate() {
return Array.from(arguments,(value) => value +1);
}
let numbers = translate(1,2,3);
console.log(numbers);
var myInformation = 'zjf,boy,student';
let arr = myInformation.split(',');//该方法可以写第二个参数,第二个参数为输出数组的长度,不得大于原数组最大长度 myInformation.split(',',2)
console.log(arr);//["zjf", "boy", "student"]
delete删除数组元素: 原来的长度不变,只是将删除位置上的元素用undefined代替了
var arr = [1,2,3,4];
delete arr[2];
console.log(arr.length); //4
console.log(arr[2]); //undefined
数组的增删方法:push,pop,shift,unshift,slice,splice
var arr = [1,2,3,4];
arr.push(1,5);// 在数组尾部添加新的项,会返回最终数组的长度
arr.pop();// 删除数组尾部的第一项,会返回删除项的值
arr.shift(); //删除数组开头的第一项,会返回删除项的值
arr.unshift(10,9,8); //在数组前端加入新的项,会返回最终数组的长度
var arr1 = [1,2,3];
var arr2 = [5,6,8]; // 将两个数组合并在一起
var arr = arr1.concat(arr2); // 不会改变原数组
var arr1 = [1,2,3,4,5,6,7,8,9];
var arr = arr1.slice(1,4); //传入一个开始位置和一个结束位置,返回给新的数组,如果传入的是负数,则加上数组的长度来确定位置
var arr = arr1.splice(1,4);// 第一个参数作为起始位置,第二个参数作为要删除的项数
var arr = arr1.splice(1,3,23,11,45,27); //第三个参数,开始作为插入的项,改变的是原数组
console.log(arr1);
数组排序reverse,sort
arr.reverse(); //反转数组顺序
var arr = [13,12,3,4];
arr.sort();//排序,会以字符串形式比较,所以会比较第一个遇到得数字,//12,13,3,4
arr.sort(compare);//可以接受一个比较函数作为参数
// 升序排序
function compare(value1,value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
查找项的索引或值:indexOf,lastIndexOf,find,findIndex
var arr = [5,6,7,18,29];
var num = arr1.indexOf(4);// 可以传入查找项,返回该项的索引(从数组的开头开始查找)
var num = arr1.lastIndexOf(4);// 可以传入查找项,返回该项的索引(从数组的结尾开始查找)
var num = arr.find(n => n >7);// 返回的是查找到的值
var num = arr.findIndex(n => n >7);// 返回的是查找到的值的索引
console.log(num);
var result = arr.includes(7); // 传入一个值,查看数组中是否有该值,有返回true,无则false
console.log(result );
console.log(arr);
fill()方法和copyWithin()方法
var arr = [1,2,3,4];
arr.fill(1); //当传入一个值得时候,所有数组的值都会变成传入的值
arr.fill(1,2,3); //第二个参数表示改变值得起始位置,第三个参数表示结束位置,如果没有第三个参数,则从起始索引到数组结尾全变成传入的值
arr.copyWithin(2,0); //第一个参数为开始填充的位置,第二个作为复制值位置,如果没有第三个参数,那个,从填充位置及之后的元素会被复制值及之后的元素替代 //[1,2,1,2]
arr.copyWithin(2,0,1); //第三个参数表示结束索引位置 // [1,2,1,4]
console.log(arr);
数组迭代方法:forEach ,map,every ,some,filter,reduce
var arr = [2,3,4,5,6,7];
// forEach
arr.forEach(function(item,index){
console.log(item + 1);
console.log(index);
});
// map,和forEach的区别就是,map可以有返回值,而forEach没有
arr.map(function(item,index){
console.log(item + 1);
console.log(index);
return item;
});
// every // 检测每一项是否满足条件,全部满足,则输出true
var result= arr.every(function(item,index){
return item > 3;
});
// some // 检测每一项是否满足条件,只要有一项满足,则输出true
var result= arr.some(function(item,index){
return item > 3;
});
// filter // 刷选出符合条件的数据,组成新数组
var newArr= arr.filter(function(item,index){
return item > 3;
});
console.log(newArr); // [4,5,6,7]
// reduce // 接受一个函数,返回一个值,后面的方法的第一个参数是返回的值,第二个参数是当前的项的值
function add(runningTotal, currentValue){
return runningTotal + currentValue;
}
var nums = [1,2,3,4,5];
var sum = nums.reduce(add);
console.log(sum); // 15
// 也可以连接数组
function concat(accumulatedString, item){
return accumulatedString + item;
}
var words = ['the ', 'quick ', 'brown ', 'fox'];
var sentence = words.reduce(concat);
console.log(sentence); // the quick brown fox