object转数组_JavaScript—数组
⼀、数组的概念
基本数据类型,只能存储⼀个值(⽐如:Number/String)。我们想存储多个值的时候可以使⽤数组。(字符串不⽅便)。⽐如:存储班级中所有学⽣的姓名。
所谓数组(Array),就是将多个元素(通常是同⼀类型)按⼀定顺序排列放到⼀个集合中,那么这个集合我们就称之为数组。
⼆、数组是什么
1)数组是⼀种引⽤数据类型, 属于对象
把很多数据装⼊⼀个盒⼦中,⽤的时候在取出来
它和普通对象功能类似,也是⽤来存储⼀些值的
不同的是普通对象是使⽤字符串作为属性名的,⽽数组是使⽤数字来作为索引操作元素
2)数组的存储性能⽐普通对象要好,在开发中我们经常使⽤数组来存储⼀些数据
三、数组的定义
· 数组是⼀组有序的数据集合。数组内部可以存放多个数据,不限制数据类型,并且数组的长度可以动态的调整。
· 创建数组最简单的⽅式就是数组字⾯量⽅式。
· 数组的字⾯量:[ ]
· ⼀般将数组字⾯量赋值给⼀个变量,⽅便后期对数组进⾏操作。
· 如果存放多个数据,每个数据之间⽤逗号分隔,最后⼀个后⾯不需要加逗号。
3.1 使⽤字⾯量创建数组
1)创建⼀个空数组
var arr4 = [];
2)创建⼀个长度为30的数组
var arr5 = [];
arr5.length = 30;
3)创建⼀个包含2个字符串的数组
var arr6 = ["⼤前端","itLike"];
3.2 使⽤ new Array() 构造函数⽅法创建数组
1)创建⼀个空数组
var arr1 = new Array();
2)创建⼀个长度为30的数组
var arr2 = new Array(30);
3)创建⼀个包含2个字符串的数组
var arr3 = new Array("⼤前端","itLike");
3.3 数组的长度
· 数组有⼀个 length 的属性,记录的是数组的数据的总长度。
· 使⽤⽅法:变量名.length 例:arr.length;
· 数组的长度与数组最后⼀项的下标存在关系,最后⼀项的下标等于数组的 length-1。
· 获取最后⼀项的数据时,可以这样书写:arr[arr.length-1];
· 数组的长度不是固定不变的,可以发⽣更改。
·
增加数组长度:直接给数组 length 属性赋⼀个⼤于原来长度的值。赋值⽅式使⽤等号赋值。
· 或者,可以给⼀个⼤于最⼤下标的项直接赋值,也可以强制拉长数组。
· 缩短数组长度:强制给 length 属性赋值,后⾯数据被会直接删除,删除是不可逆的。
数组存储的数据可以是任何类型(数字、字符、布尔值等)
3.4 获取数组元素
· 数组可以通过⼀个 index(索引值、下标)去获取对应的某⼀项的数据,进⾏下⼀步操作。
· index:从 0 开始,按照整数排序往后顺序排序,例如 0,1,2,3……
· 可以通过 index 获取某⼀项值之后,使⽤或者更改数组项的值。
· 调⽤数据:利⽤数组变量名后⾯直接加 [index] ⽅式。
· 注意:如果索引值超过了数组最⼤项,相当于这⼀项没有赋值,内部存储的就是 undefined。
· 更改数据:arr[index] 调⽤这⼀项数据,后⾯等号赋值更改数据。
3.5 数组遍历
· 遍历:遍及所有,对数组的每⼀个元素都访问⼀次就叫遍历。利⽤ for 循环,将数组中的每 ⼀项单独拿出来,进⾏⼀些操作。
· 根据下标在 0 到 arr.length-1 之间,进⾏ for 循环遍历。
// 定义⼀个数组
var arr = [45, 56, 76, 88, 89, 90, 100, 34, 56];
// 数组遍历
for (var i = 0 ; i <= arr.length - 1 ;i++) {
console.log(arr[i]);
}
// 给数组中每⼀项数据加 5
for (var i = 0; i < arr.length; i++) {
// 获取每⼀项数组的数据,等号赋新值
arr[i] += 5;
}
console.log(arr);
数组应⽤案例:
求⼀组数中的所有数的和以及平均值。
// 定义⼀个数组
var arr = [45, 56, 76, 88, 89, 90, 100, 34, 56];
// 累加器。累积数组每⼀项的和,初始值是 0
var sum = 0;
// 数组遍历,将每⼀项累加到 sum ⾥
for (var i = 0; i <= arr.length - 1; i++) {
sum += arr[i];
}
// 输出 sum
console.log("这组成绩的总和是" + sum);
// 求取平均值 = 总和 / 班级⼈数
var avg = sum / arr.length;
console.log("这个班的平均成绩是" + avg);
求⼀组数中的最⼤值和最⼩值,以及所在位置
var arr = [10,-20,30,40];
//定义⼀个最⼤值和⼀个最⼩值,把他们的索引值赋值给固定的两个变量
var maxValue = arr[0];
var minValue = arr[0];
var maxIndex = 0;
var minIndex = 0;
for(var i=1;i<arr.length;i++){
//如果数组中的元素⼤于我们定义的最⼤值
if(arr[i]>maxValue) {
//把这个元素赋值给最⼤值,把他对应的索引值,赋值给maxIndex
maxValue = arr[i];
maxIndex = i;
}
//如果数组中的元素⼩于我们定义的最⼩值
if(arr[i]<minValue){
//把这个元素赋值给最⼩值,把他对应的索引值,minIndex
minValue = arr[i];
minIndex = i;
}
}
console.log(maxValue);
console.log(maxIndex);
console.log(minValue);
console.log(minIndex);
3.6 数组是⼀个引⽤类型
var arr = [1,2,3,4];
console.log(typeof arr);    //object
⽤typeof 来检测,你会发现数组输出 object。数组是对象。
保存数组的变量,实际上保存是数组内存地址:
var a = [1,2,3,4];
var b = a;
b[0] = 88;          // 修改的是数组b下标为0的项
console.log(a);    // 数组a的下标为0的项也改为88
// [88, 2, 3, 4]
都是数组[1,2,3]内容、长度、项的位置完全⼀样,但是不==
var a = [1,2,3];
var b = [1,2,3];
console.log(a == b);  // false
那是因为引⽤类型⽐较的是地址,变量a和变量b指向的位置不⼀样,不能判相等。
如果a⾥⾯存储的是基本类型,那么语句b=a就是把a的值赋值⼀份给b。 如果a⾥⾯存储的是引⽤类型,那么b将指向a现在指向的位置,a的值不会赋值⼀份,a、b指向同⼀个地⽅
检测数组类型
instanceof 检测某个实例是否是某个对象类型
var arr = [1,2,3,4];
var arr2 = new Array(1, 2, 3);
console.log(arr2 instanceof Array);    // true
console.log(arr instanceof Array);      // true
var a = {};
console.log(typeof (a));                // object
console.log(a instanceof Array);        // false
四、数组常⽤⽅法filter过滤对象数组
数组是对象,对象都有属性和⽅法。
4.1 toString() / valueOf() 每⼀个对象都具有这两个⽅法
· toString() 把数组转换成字符串,逗号分隔每⼀项
// 字⾯量⽅法创建数组
var arr = [1, 2, 3, 4];
// toString() ⽅法:转字符串
console.String());        // 1,2,3,4
· valueOf() 返回数组对象本⾝
var arr = [1, 2, 3, 4];
console.log(arr.valueOf());        // [1, 2, 3, 4]
4.2 ⾸尾数据操作
push() 在数组末尾添加⼀个或多个元素,并返回数组操作后的长度 pop() 删除数组最后⼀项,返回删除项
shift() 删除数组第⼀项,返回删除项
unshift() 在数组开头添加⼀个或多个元素,并返回数组的新长度

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。