js笔记十九之Array数组的增删改

数组的基础结构

数组也是对象数据类型的 typeOf []

console.log(typeOf [])// -> "object"

数组也有属性名,只不过属性名是数字,我们把数字属性名称之为它的索引;
数组是以数字作为索引,索引从零开始,有一个length属性代表数组的长度

// [12,23,34]
// 0: 12
// 1: 23
// 2: 34
// length: 3

类数组: 类似于数组,但是不是数组

  1. 通过getElementsByTagName获取的元素集合是类数组;
  2. 函数中的实参集合arguments也是类数组
    ...
  • 循环数组中的每一项
// for循环
var ary = [12,23,34,45];
Array.prototype.aa = 100;
for(var i=0;i<ary.length;i++){
    console.log(ary[i]) // -> 12,23,34,45
}

// for in循环
for(var key in ary){
    // -> key: 属性名(数组中的属性名是索引)
    console.log(ary[key]) // -> 12,23,34,45,100
}

// -> 区别: for循环只能遍历到数组的私有的一些属性,儿for in循环可以吧一些定义的公共属性也能遍历到

数组中的常用方法

数组中有很多常用方法 'console.dir(Array.prototype)'

  • 四个方面记忆数组的方法
  1. 方法的意义和作用
  2. 方法的参数
  3. 方法的返回值
  4. 通过此方法,原来的数组是否发生了改变
  • 实现数组的增加,修改,删除
增加
  • push()

向数组的末尾增加新内容;
参数: 一个或多个,任何数据类型都可以; 想要给数组末尾追加什么,直接传递到push方法中即可,传递多个用逗号隔开
返回值: 新增后数组的长度
原有数组改变了

var ary = [12,23,34];
ary.push(45,{name:'lilei'},function(){}); // -> 6
console.log(ary); // -> [12, 23, 34, 45, {…}, ƒ]
  • unshift()

向数组的开头增加新内容;
参数: 一个或多个,任何数据类型都可以;(可以是多个任意数据类型的值)
返回值: 新增后数组的长度
原有数组改变了

var ary = [12,23,34]
ary.unshift(45,{name:'lilei'},function(){}); // -> 6
console.log(ary); // -> [45, {…}, ƒ, 12, 23, 34]

把数组当做一个普通对象,使用对象键值对的操作,给其设置新的属性(索引)
向数组的末尾添加新的内容

var ary = [12,23,34];
ary[ary.length] = 45; 
console.log(ary) // -> [12, 23, 34, 45]
删除
  • pop(): 删除数组中的最后一项

参数: 无
返回值: 别删除的最后一项
原有数组改变

var ary = [12,23,34];
ary.pop()
console.log(ary) // -> [12,23]
  • shift(): 删除数组中的第一项

参数: 无
返回值: 被删除的那一项
原有数组改变了
删除第一项之后, 后面的每一项索引都要向前进一位(导致后面项的索引发生改变)

var ary = [12,23,34];
ary.shift()
console.log(ary) // -> [23,34]
  • delete

把数组当做普通的对象操作
delete ary[索引]; 删除指定索引项
当前项被删除后,其他项索引不会改变
当前数组的长度也不会改变

var ary = [12,23,34];
delete ary[0]
console.log(ary) // -> (3) [empty, 23, 34]
  • ary.length--

删除数组最后一项

var ary = [12,23,34];
ary.length--;
console.log(ary) // -> [12,23]
  • splice

数组中内置方法,本意删除,但可以实现数组的增加/修改/删除

splice(n,m): 从索引n开始,删除m个(m不写是删除到数组的末尾,)
返回值: 被删除的内容的新数组
原有数组改变

var ary = [12,23,34];
ary.splice(1,2); // 返回:[23,34]
console.log(ary) // -> 12

splice(0): 清空数组

var ary = [12,23,34];
ary.splice(0);
console.log(ary) // -> []

splice(): 一项也不删,返回一个空数组

var ary = [12,23,34];
ary.splice();
console.log(ary) // -> [12, 23, 34]

splice实现修改
splice(n,m,x): 在原有删除的基础上用x代替原有项

var ary = [12,23,34];
ary.splice(1,1,45);
console.log(ary) // -> [12, 45, 34]

splice实现增加
splice(n,0,x): 在修改的基础上,一项都不删除,把x插入到索引n的前面
splice(0,0,x): 向数组开头增加新内容
splice(ary.length,0,x): 向数组末尾增加新内容
splice(0,1): 删除数组第一项
splice(ary.length-1): 删除数组最后一项

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

相关阅读更多精彩内容

  • 数组常用的15个方法 学习数组中的常用方法我们需要从四个方面去探讨 方法的作用 需要传哪些参数&lt 是否有返回值...
    落雨飞尘阅读 5,724评论 0 0
  • 一、数组的判断 arr instance Array; Array.isArray(arr); 方法: 1. pu...
    你听cmy1994阅读 2,738评论 0 0
  • 创建一个数组两种常用的方式:字面量方式,和实例创建方式。 数组是由多个项组成的,每一项之间用","隔开,并且每一项...
    阿九是只大胖喵阅读 1,787评论 0 0
  • Array中的方法 四个方面去学习数组的方法 方法的作用 是否传递参数 有没有返回值 原数组是否发生改变 注意: ...
    不是王小贱阅读 3,130评论 0 3
  • 如何把兴趣爱好可以和职业结合融合起来,并且可以养活自己! 任性 追随自己的内心,干任何工作不累,不要命,因为是玩...
    刘芙宁阅读 2,629评论 0 0

友情链接更多精彩内容