凡是通过Array构造函数创建的对象,都是数组
静态成员
● form方法:可以将一个伪数组,转换成真数组
● isArray方法:判断一个给定的数据,是否为一个真数组
function test(){
console.log(Array.isArray(arguments));//判断是否为数组 true
var newArray = Array.from(arguments);
console.log(newArray);//输出数组的形式
console.log(newArray,Array.isArray(newArray));//转换后为true
}
test(1,23,4,5,12);
● of方法:类似于中括号创建数组,一次赋予数组每一项的值
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
实例成员
● fill:用某个数据填充数组
● pop:从一个数组中删除并返回最后一个元素。
● push:方法向数组末尾添加新项目,并返回新长度。
● reverse:将当前数组颠倒顺序//arr.reverse();
● sort:排序
var arr = [1, 2, 6, 5, 3];
arr.sort();
console.log(arr); //[1, 2, 3, 6];//排序,以个位数为准
// 解决方法:
var arr = [1, 21, 333, 25, 7];
arr.sort(function (a, b) {
return a - b;//升序, 若降序则b - a
})
console.log(arr);
// 随机打算顺序(洗牌)
arr.sort(function(a,b){
return Math.random() - 0.5;
});
console.log(arr);
纯函数、无副作用函数:不会导致当前对象发生改变
● concat:用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [7,8,9];
var newArry = arr1.concat(arr2,arr3);
console.log(newArry);
includes:寻找数组中是否包含满足条件的元素
// includes()
var arr = [32,45,12,76];
// 从数组下标3的位置开始寻找,目标是67
console.log(arr.includes(67,3));
join:将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串,如果数组只有一个项目,那么将返回该项目而不使用分隔符。
// join()
var arr = ['abc', 'def','ghi'];
console.log(arr.join());
console.log(arr.join(''));
console.log(arr.join('---'));
slice:方法可从已有的数组中返回选定的元素
/* slice(begin, end);
/ begin提取起始处的索引(从 0 开始),从该索引开始提取原数组元素
/ 提取终止处的索引(从 0 开始),在该索引处结束提取原数组元素。
slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)
*/
var animls = ['ant', 'bot', 'ron', 'zin'];
// 从索引0开始依次输出,到2索引结束,但不包含2
console.log(animls.slice(0,2));//['ant','bot']
// 从索引1开始依次输出,到2索引结束,但不包含2
console.log(animls.slice(1,2));//['bot']
// 从索引3开始依次输出
console.log(animls.slice(3));
// 从索引-1开始依次输出,即右边第一个
console.log(animls.slice(-1));
● forEach:遍历数组
// 数组的遍历
var arr = [12, 123, 52, 21, 2];
arr.forEach(function (item, i, a) {
//其中一项,下标,整个数组本身
console.log(item, i, a);
})
● some:是否至少有一个元素满足条件,返回一个布尔值
● every:是否所有一个元素满足条件,返回一个布尔值
var arr = [11,82,45,56,25,60,80,100];
// 是否所有的同学都满足条件,满足为true,否则为false
var result = arr.every(function(item){
return item >= 60;
});
console.log(result);
// 判断是否至少有一个同学及格
console.log(arr.some(function(item){
return item >= 60;
}))
● filter:过滤、得到满足条件的元素组成的新数组
var arr = [11, 82, 45, 56, 25];
// 得到所有及格的分数线
var newArr = arr.filter(function(item){
return item >= 60;
});
console.log(newArr);
● find:查找第一个满足条件的元素、返回元素本身、如果没找到返回undefined
● findIndex:查找第一个满足条件的元素,返回该元素下标
var arr = [{
name:"a",age:13,score:56},
{
name:"b",age:14,score:75}
]
// 得到及格的学生,找到一个便返回
var result = arr.find(function (item) {
return item.score >= 60;
})
console.log(result);
//findIndex() 找到满足条件的函数并返回索引,找不到则返回-1
var result = arr.findIndex(function (item) {
return item.score >= 60;
})
console.log("当前索引为:" + result);
● map 映射,将数组的每一项映射称为另外一项
var arr = [1, 21, 333, 25, 7];
var newArr = arr.map(function(item,i){
return {
name:"学生" + (i + 1),
score:item
}
});
console.log(newArr);
// 得到一个学生的姓名数组
newArr = newArr.map(function(item){
return item.name;
});
console.log(newArr);