目录
数组对象
数组是存储任意数据的集合,数组由索引和值组成,天生自带length属性,索引0对应第一项,1对应第二项依次类推,最后一项的索引是arr.length -1;
数组对象的创建
-
字面量 : [] 不给数据就是空数组
-
构造函数:new Array(); 不给数据就是空数组
// 字面量
var arr = [10, 20, "hello", true, {
name: "哈哈"
}];
console.log(arr);
console.log(arr.length);
// 构造函数
// 不传递参数 返回空数组
var arr1 = new Array(); //new反悔了数组类下具体的实例
console.log(arr1);
// 设置 原来没有就是增加 原来有就是修改
arr1[0] = 100;
arr1[1] = 200;
console.log(arr1);
// 传递一个参数 规定数组的长度
var arr2 = new Array(10);
console.log(arr2); //[空属性 × 10]
// 设置 原来没有就是增加 原来有就是修改
arr2[0] = "哈哈";
console.log(arr2);
// 传递多个参数 设置数组中的数据
var arr3 = new Array(10,20,30,"哈哈");
console.log(arr3);
// length属性是一个可读可写的属性 (既可以获取又可以设置)
var arr4 = [10,20,30,100,200];
// 获取长度
console.log(arr4.length);
// 设置
arr4.length = 100;
console.log(arr4);
arr4.length = 2;
console.log(arr4);
// 删除数组末尾最后一项
var arr5 = [100,20,300,"哈哈",1000,2000];
console.log(arr5);
// arr5.length = 5;
// console.log(arr5);
arr5.length--;
console.log(arr5);
-
length属性可以改变原数组
检测是否是数组的方法
(1) instanceof 运算符 它可以用来检测是否为数组
(2)Array.isArray(参数); H5新增的方法 ie9以上版本支持
// 翻转数组
function reverse(arr) {
// if (arr instanceof Array) {
if (Array.isArray(arr)) {
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
} else {
return 'error 这个参数要求必须是数组格式 [1,2,3]'
}
}
console.log(reverse([1, 2, 3]));
console.log(reverse(1, 2, 3));
// 检测是否为数组
// (1) instanceof 运算符 它可以用来检测是否为数组
var arr = [];
var obj = {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);
// (2) Array.isArray(参数); H5新增的方法 ie9以上版本支持
console.log(Array.isArray(arr));
console.log(Array.isArray(obj))
数组对象的增加和删除
var arr1 = [10, 20, 30, 100, 200, 1000, 2000];
/*
push(数据,...);
作用:在数组末尾进行增加
参数:增加的数据,数据可以是一个也可以是多个,多个之间用逗号隔开
是否改变原数组:改变
返回值:返回增加后数组的长度
*/
var resArr1 = arr1.push("哈哈", "呵呵");
console.log(resArr1, arr1);
/*
pop();
作用:在数组末尾进行删除,删除一项
参数:无
是否改变原数组:改变
返回值:返回删除的哪一项
*/
var arr2 = [10, 20, 30, 100, 200, 1000, 2000];
var resArr2 = arr2.pop();
console.log(resArr2, arr2);
/*
unshift(数据,...);
作用:在数组开头进行增加
参数:增加的数据,数据可以是一个也可以是多个,多个之间用逗号隔开
是否改变原数组:改变
返回值:返回增加后数组的长度
*/
var arr3 = [10, 20, 30, 100, 200, 1000, 2000];
var resArr3 = arr3.unshift({
name: "哈哈"
});
console.log(resArr3, arr3);
/*
shift();
作用:在数组开头进行删除,删除一项
参数:无
是否改变原数组:改变
返回值:返回删除的哪一项
*/
var arr4 = [10, 20, 30, 100, 200, 1000, 2000];
var resArr4 = arr4.shift();
console.log(resArr4, arr4);
// splice(startIndex,n);
// 作用:从startIndex索引开始删除n项
// 参数:startIndex开始索引 n:个数
// 是否改变原数组:改变
// 返回值:将删除的每一项以一个新的数组进行返回 ,没有删除返回空数组
var arr5 = [10, 20, 30, 100, 200, 1000, 2000];
var resArr5 = arr5.splice(2, 3);
console.log(resArr5, arr5);
// splice(startIndex); 只传递开始索引,从当前索引开始删除到末尾
var arr6 = [10, 20, 30, 100, 200, 1000, 2000];
var resArr6 = arr6.splice(3);
console.log(resArr6, arr6);
// 替换
// splice(startIndex,n,content,...); 从当前索引开始删除n项用content进行替换
var arr7 = [10, 20, 30, 100, 200, 1000, 2000];
var resArr7 = arr7.splice(2, 3, "哈哈", {
name: "哈哈"
});
console.log(resArr7, arr7);
// 增加
// splice(startIndex,0,content,...); 从当前索引开始删除0项用content进行替换,插入到开始索引之前
var arr8 = [10, 20, 30, 100, 200, 1000, 2000];
var resArr8 = arr8.splice(2, 0, "哈哈", {
name: "哈哈"
});
console.log(resArr8, arr8);
筛选数组元素
// 有一个包含工资的数组[1500, 1200, 2000, 2100, 1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面
var arr = [1500,