简介
数组对象用来在单独的变量名中存储一系列的值。
并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的ID,以便它可以很容易地被访问到
- 在一个数组中可以有不同的便力量类型,可以包括对象元素、函数、数组
创建数组
创建数组有三种方式
// 字面量的方式
var arr1 = [1,2,3];
//构造函数的方式
var arr2 = new Array();
// 简洁的方式
var arr3 = new Array(1,2,3);
console.log(arr1);[1,2,3]
console.log(arr2);[]
console.log(arr3);[1,2,3]
访问数组中的元素
通过指定数组名以及索引号,可以访问数组中的某个特定的元素。
数组的索引号是从0开始的。
console.log(arr1[0]);//1
**数组不仅可以保存基本数据类型,还可以保存函数,对象,数组。
var arr = [function () {
console.log(1);
}, {
name: '张浩',
age: 19
},
[1, 2, 0]
]
数组的属性和方法
属性
- length:最常用的属性,返回数组中元素的个数。
方法
pop():在将数组中的最后一个元素删除,并返回这个元素,改变原数组。
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(arr1.pop());//10
console.log();// [1, 2, 3, 4, 5, 6, 7, 8, 9];
push():在数组的后面添加一个或多个元素。返回添加后的数组的长度。改变原数组。
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(arr1.push(10, 11, 12)); //12
console.log(arr1); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12];
shift():在数组的前面删除一个元素,返回删除元素。改变原数组。
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(arr1.shift()); //1
console.log(arr1); //[2, 3, 4, 5, 6, 7, 8, 9, 10];
unshift():在数组的开头添加一个或者多个元素,返回添加以后的数组的长度,改变原数组。
var arr1 = [1, 2, 3, 6, 7, 8, 9, 10];
console.log(arr1.unshift(0,-1,-2)); //11
console.log(arr1); //[-2,-1,0,2, 3, 6, 7, 8, 9, 10];
// contact链接一个或者多个数组。返回新数组,不改变原数组
arr1 = [1, 2, 3];
arr2 = [4, 5, 6];
console.log(arr1.concat(arr2)); // [1, 2, 3, 4, 5, 6]
console.log(arr1, arr2); // [1, 2, 3] , [4, 5, 6]
// join()数组转换成字符串
console.log(arr1.join()); //1,2,3
console.log(arr1.join('')); //123
console.log(arr1.join('&')); //1&2&3
console.log(arr1.join(' ')); //1 2 3
console.log(arr1, arr2); // [1, 2, 3] , [4, 5, 6]
// toString()将数组转换成字符串
console.log(arr1.toString()); //1,2,3
console.log(arr1.toString(2)); //1,2,3
console.log(arr1, arr2); // [1, 2, 3] , [4, 5, 6]
// indexOf()查找元素的下标值
console.log(arr1.indexOf(2)); //1
console.log(arr1.indexOf(5)); //-1
console.log(arr1, arr2); // [1, 2, 3] , [4, 5, 6]
// includes()检测数组是否包含元素
console.log(arr1.includes(1)); // true
console.log(arr1.includes(5)); // false
// lastIndexOf()从后往前查,返回元素的下标
console.log(arr1.lastIndexOf(3)); //2
console.log(arr1.lastIndexOf(5)); //-1
console.log(arr1); // [1, 2, 3]
// slice()截取数组,返回截取元素组成的新字符串
var arr3 = [2, 8, 6, 4, 9, 62, 69, 48, 21, 10];
console.log(arr3.slice(2)); //[6, 4, 9, 62, 69, 48, 21, 10]
console.log(arr3.slice(-2)); // [21, 10]
console.log(arr3.slice(-7, 4)); //[4]
console.log(arr3.slice(2, -4)); // [6, 4, 9, 62]
console.log(arr3.slice(-100, -4)); // [2, 8, 6, 4, 9, 62]
console.log(arr3);
// splice()可以对数组进行增删改,原数组会被改变
arr4 = [5, 6, 8, 1, 3];
// console.log(arr4.splice(2));//[8, 1, 3]
// console.log(arr4.splice(-2));// [1, 3]
// console.log(arr4.splice(-20));// [5, 6, 8, 1, 3]
// console.log(arr4.splice(0,2));// [5, 6]
// console.log(arr4.splice(0,-2));// []
// console.log(arr4.splice(-7,2));// [5,6]
// console.log(arr4.splice(-7, 2, 1, 2)); //[5, 6]
// console.log(arr4); //[1, 2, 8, 1, 3]
// reverse()反转数组的元素顺序,改变原数组
var arr5 = [1, 5, 3, 8, 6];
console.log(arr5.reverse());
console.log(arr5);
// sort()对数组及逆行排序,改变原数组。
var arr6 = [1, 5, 6, 7, 2, 3];
console.log(arr6.sort(function (a, b) {
return a - b
}));
console.log(arr6);
// 数组的遍历方法
// 1
var arr1 = [20, 63, 45, 98, 20, 1];
// var temp = arr1.forEach(function (value, index, arr) {
// console.log(value);
// console.log(index);
// console.log(arr);
// });
// console.log(temp);// undefined
// 2
// for (let i = 0; i < arr1.length; i++) {
// console.log(arr1[i]);
// }
// 3
// for (const index in arr1) {
// console.log(index);
// }
// 4
// for (const value of arr1) {
// console.log(value);
// }
// 5 some方法来判断数组中是否有满足条件的元素,返回一个布尔值,一旦遇到true就会停止遍历
// var temp = arr1.some(function (value, index, arr) {
// console.log(value);
// console.log(index);
// console.log(arr);
// if (value >= 89) {
// return false;
// }
// })
// console.log(temp);
// 6 every方法来检测数组中是否所有的值都满足条件,回调函数必须返回一个布尔值来告诉every是否满足条件。一旦接收到返回false就会停止遍历
// var temp = arr1.every(function (value, index, arr) {
// console.log(value);
// console.log(index);
// console.log(arr);
// if (value >= 0) {
// return false;
// }
// })
// console.log(temp);
// 7 filter方法过滤所有满足条件的元素,返回他们组成的数组,filter方法最后还接受一个this Value的值,作为在回调函数中this的值.
var temp = arr1.filter(function (value, index, arr) {
console.log(value, index, arr);
console.log(this);
if (value >= 45) {
return true;
}
},[1,2]);
console.log(temp);
// 8 reduce方法将数组元素累计为一个值,从左到右
// var temp = arr1.reduce(function (totale, value, index_1, arr) {
// console.log(totale);
// console.log(value);
// console.log(index_1);
// console.log(arr);
// return totale += value
// }, 0);
// console.log(temp);