数组

数组的概念

用于保存一组数据的集合
数组的定义格式:
中括号或者new定义,里面每一个元素的结束的时候使用一个逗号隔开,最后一个元素可以不使用逗号结尾。

数组的申明

1.var a = [];
2.var a = new Array();

instanceof 查看某个变量是否是某个数据类型的实例

数组保存数据的格式

严格意义上来说数组可以保存任意格式的数据
如果数组中保存的还是一个数组,那么这个数组叫做多维数组
eg:

var a =[
    [[1,2,3],2,3],
    [4,3,2],
    [8,2,7]
];

数组的键

数组的每一个元素都是由键与值组成
eg:

[1,2,3,4,5];
[
 0  =>   1,
 1  =>   2,
 2  =>   3,
 3  =>   4,
 4  =>   5,
]
['a','b','c']
[
 0  =>  'a',
 1  =>  'b',
 2  =>  'c',
]
数组的键是从0开始的,是一个递增的数值队列

object.keys 获取某一个数组所有的键,返回的也是一个数组,这个数组是由原数组的键组成的。当然这个数组也有自己的键。
数组所有的键都是字符串格式的,只有看起来有点像数据格式,这个是和对象是一样的,对象所有的键也都是字符串格式的。

在获取数组的某一个值的时候,键名首先会转化为整型,然后整型转化为字符串,如果是带有小数点后面数字的小数就不行了

数据的访问形式

oDiv.style.display
oDiv['style']['display']
这个是对象的访问形式,不是数组的
数组只能使用[]的形式进行访问
arr[数字]
arr[变量]
数组也支持存放不是数字键的元素,但是这个元素是按照对象格式存放的,不计算在数组的元素个数中
可以使用对象的方式获取,也可以使用数组的方式获取
arr['name'] = 'zhangsan';

length

数组中最重要的一个属性,表示数组中元素的个数,
这个length是动态变化的,数组元素增加的时候,
length会自动变大,元素减少的时候,length会自动的减少,
如果手动设置length,那么数组也会发生变化。
数组的键是使用32位2进制来保存的,所有最大值是2^32-1;
也就是数组最多保存2^32-1个值
数组的可以是不连续的,但是length总是比最大的键名大1,
没有保存数据的位置是空位

delete(删除一个对象的属性)

也能够删除数组的元素,删除之后元素的值删除了,但是数组的长度不会发生改变,也就是length不会改变。
eg:

var a = {};
a.name = 'zhangsan';
a.age = 18;
a.sex = 'nan';
console.log(a);
delete a.age;
console.log(a);

in运算符

判断某一个键是不是在数组中,返回的是一个布尔值
eg:

var arr = [1,3,5,89];
console.log(2 in arr);  //true 判断是键
console.log(89 in arr); //false

也能判断对象是否具有某个属性
eg:

//能不能判断对象的属性在不在对象里面
var zhangsan = {
    "age":"14",
    "height":"141",
    "weight":"200",
};
console.log('age' in zhangsan);
console.log('age1' in zhangsan);

for……in

遍历数组,类似于while、for循环,但是比这两智能一点,会跳过空位
eg:数组

var arr = [];
arr[1] = 'ab';
arr[100] = 1000;  //length
//for
for(var i =0;i<arr.length;i++){
    console.log(arr[i]);
}
arr['name'] = 'laiya';

eg:对象

var zhangsan = {
    "age":"14",
    "height":"141",
    "weight":"200",
};
for(var j in arr){
    console.log(arr[j]);
}
for……in 遍历会将数组中不标准的键名和值也会遍历出来,而for、while循环不会

forEach遍历数组

eg:

var arr = [];
arr[1] = 'ab';
arr[100] = 1000;  //length
//for
arr.forEach(function(){
    console.log(1);
});

数组中的空位

数组中间的空位是计算在length里面的,但是里面没有值,获取的时候是undefined
eg:
var a = [1,2,,,,,3,4]
console.log(arr);
console.log(arr.length);
数组结尾的空位是不生效的,所以可以省略最后一个逗号
eg:
var a = [1,2,3,4,]
console.log(a);
console.log(a.length);

undefined与空位的区别:

eg:
var arr = [1,2,3,,,,,5,6];
console.log(arr[5]); //undefined
for(var i in arr){
    console.log(i); // 01278
}
var arr1 = [1,2,3,undefined,undefined,3,4];
console.log(arr1[3]); //undefined
for(var j in arr1){
    console.log(j)  //0123456?
}
获取内容的时候都是undefined
真实空位在for……in循环的时候会自动跳过,而真实存储undefined的不会跳过

类数组对象

类似于数组的对象,具有length属性,这个属性表示的变量内部的元素的个数,但是这个length不会动态变化。

arguments:参数对象
字符串
绝对数的DOM集合,oDiv

数组函数

压栈函数:
push(推)向数组中添加一个元素,添加到数组的最后
pop(弹出)从数组中弹出一个元素,从最后删除一个元素

    eg:
    var arr = [1,3,5];
    arr.push(9);
    console.log(arr);
    arr.pop();
    console.log(arr);

unshift:向数组中添加一个元素,添加到数组的开头
shift:从数组中删除一个元素,从数组的开头删除

eg:
var arr = [1,3,5];
arr.unshift(9);
console.log(arr);
arr.shift();
console.log(arr);

splice:从数组中删除元素
splice(start,num)从start位置开始,删除num个元素
splice(start,num,……)从start位置开始,删除num个元素,然后将后面的所有的参数作为元素添加到这个删除元素的位置
如果num为0,那么在start的位置开始插入元素

eg:
var arr = [1,3,5,7];
arr.splice(1,0,100,200,11); //1 ,7
console.log(arr);

slice:数组截取,不会改变原来的数组,只是将截取出来的数据作为返回值单独返回
slice(start,end-1)返回的是start开始,到end-1的数组元素的集合,返回的也是一个数组

eg:
var arr = [1,2,3,4,5];
var a = arr.slice(1,4); //2,3,4
console.log(arr);
console.log(a);

join:将数组转化为字符串,默认是使用逗号连接
join(连接符):将数组元素使用连接符连接起来组成字符串

eg:
var arr0 = ['I',
'L','o','v','e','Y','o','u'];
var you = [5,2,0,1,3,1,4];
var arr = arr0.concat(you);
console.log(arr);
var str = arr.join('_');
console.log(str)
console.log(arr0);
console.log(you);

concat:合并数组
基本语法:数组1.concat(数组2);返回的是一个合并后的数组,并不会改变原来的数组

eg:
var arr0 = ['I',
'L','o','v','e','Y','o','u'];
var you = [5,2,0,1,3,1,4];
var arr = arr0.concat(you);
console.log(arr);
console.log(arr0);

reverse:数组翻转,会改变原来的数组
arr.reverse();

eg:
var arr = [1,2,3,4,5];
arr.reverse();
console.log(arr);

冒泡排序

基本语法:

for(){
    for(){

    }
}
eg:
var arr = [9,2,6,3,89,44,32,11];
        //确定规则  从大到小
for(var i = 0;i<arr.length-1;i++){
    for(var j = 0;j<arr.length-i;j++){
        if(arr[j]<arr[j+1]){
            var a = arr[j+1]
            arr[j+1] = arr[j];
            arr[j] = a;

        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载:在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总...
    七色烟火阅读 3,397评论 0 3
  • 数组的定义 数组是按序号排列的一组值,每个值的位置都有编号(从0开始)。数组本质上是一种特殊的对象。它的键名是按(...
    Allin_Lin阅读 676评论 0 0
  • 一、数组定义 array() 1、索引数组 在一个变量中,存储一个或多个值。数组中的每一个元素都有一个访问ID,根...
    竹与豆阅读 580评论 0 0
  • 连绵几日的细雨, 在傍晚已转晴, 空气中已经没有了烦闷,只有清新, 我闻到了你透明。 离别几日的...
    忆亭阅读 155评论 0 2
  • “红花初绽雪花繁,重叠高低满小园。”“粉薄红轻掩敛羞,花中占断得风流。”看着满山遍野的杏花,莲心不自禁的吟出这两句...
    原隰阅读 216评论 0 0

友情链接更多精彩内容