数组中常用的方法 -- 增加、删除以及修改

//数组中常用方法
//控制台输入 console.dir(Array.prototype)可在Array这个内置类的原型上查看到

/===========================================================/

//学习方法:
//1、方法的意义和作用
//2、方法的形参
//3、方法的返回值
//4、通过此方法,原来的数组是否发生了改变

/===========================================================/

//【实现数组的增加、修改和删除】

//【增加】
//1、push() 向数组的末尾追加新内容 ,并返回新的长度。原来的数组发生改变
//参数:一个到多个,任何数据类型都可以,想要给数组末尾追加什么,直接传递到push方法中即可,传递多个用逗号隔开
//返回值:返回新数组的长度

var ary = [12, 34, 45];

var num = ary.push(14, 'string', {name: 'aaa'}, function () {
});

console.log(ary);   // 原来数组发生改变 => [12, 34, 45,14,'string',{name:'aaa'},function (){}]
console.log(num);   // 新数组长度 => 7

//2、unshift() 向数组开头追加新内容
//参数:需要追加的内容(可以是多个任何数据类型值)
//返回值:新增后数组的长度

var ary2 = [1, 2, 3];
var aryLength = ary2.unshift('bbb');

console.log(ary2);  // 向数组开头增加内容 => ['bbb',1,2,3]
console.log(aryLength); // 新增后数组的长度 => 4

//3、把数组当作一个普通的对象,使用对象键值对的操作,给其设置新的属性(索引)
//ary[ary.length]=xxx 向数组的末尾追加了新的内容

var ary3 = [7,8,9];
ary3[ary3.length] = 'hellowww';
console.log(ary3); // => [7,8,9,'hellowwww']

/===========================================================/
//【删除】
//1、pop() 删除数组最后一项
//参数:无
//返回值: 被删除的最后一项。原来的数组改变了

var arry  = [1,2,3];
var popResult = arry.pop();

console.log(popResult);//返回被删除的项 => [3]
console.log(arry); //  原来的数组发生改变  => [1,2]

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

var arry2 = [4,5,6];
var shiftResult = arry2.shift();

console.log(shiftResult); // 返回被删除的项 => [4]
console.log(arry2); // 原来数组改变了 => [5,6]

>[5, 6]
>0: 5                //索引向前进一位
>1: 6                //索引向前进一位
>length: 2
>__proto__: Array(0)

//3、把数组当做普通对象操作,delete删除
//delete ary[索引]删除指定索引这一项
//当前项被删除后,原有数组的其他项索引不会改变,当前的length不会改变

var arry3 = [7,8,9];
delete arry3[0];
console.log(arry3); //=> [empty, 8, 9]

>[empty, 8, 9]
>1: 8
>2: 9
>length: 3
>__proto__: Array(0)

//4、改变数组的长度
// ary.length-- 数组长度减1,删除数组的最后一项

 var arry4 = [5,6,7];
console.log(arry4.length); // => 3
arry4.length--;
console.log(arry4); //=> [5,6]
console.log(arry4.length); // => 2
 
>[5, 6]
>0: 5
>1: 6
>length: 2
>__proto__: Array(0)

/===========================================================/

//【删除】、【增加】、【修改】
//splice() 数组内置类的方法,可以实现数组的增加、修改、删除
/*
* splice()实现删除:
* splice(n,m)从索引n开始删除m个(参数m不写是删除到数组的末尾)
*返回值:被删除的内容(以一个新数组保存被删除的内容),原有数组改变
*
* => splice(0) 参数为0,表示从索引0开始到数组末尾清空数组
* => splice() 不带参数,原有数组一项都不删除,返回值为一个空数组
*
*splice()实现修改:
* splice(n,m,x) 删除原有数组中索引为n开始m个项,并且n开始的m个项以x代替,
* 返回值为:以一个新数组保存从索引n开始m个项。原有数组发生改变
*
* splice()实现增加:
* splice(n,0,x) 删除原有数组中索引为n开始0个项,那就表示一项都不删除,而x则被
* 插入到索引n的前面。因为一项都不删除,所以返回值为:[]空数组。原有数组发生改变
*
*
* */

//举3个栗子:
/*======================================================================*/
//splice()实现删除:
var arryOne = [1,2,3];

//删除从索引0开始的 2个项,返回值赋值给变量sResult_1,此处的返回值是一个数组对象,其实变量存的是引用类型的地址
//指向这个新数组的内存地址。

var sResult_1 = arryOne.splice(0,2);
console.log(sResult_1); // => 返回值:[1,2]
console.log(arryOne); // =>原有数组发生改变 => [3]
//在发生改变的数组上继续操作
var sResult_2 = arryOne.splice();   // =>不带参数,不删除任何项
console.log(sResult_2);     //  => 返回值为空数组 => []
console.log(arryOne);       //原有数组不改变  => [3]

var sResult_3 = arryOne.splice(0); // 从索引0开始清空数组
console.log(sResult_3);         //  返回被删除的内容  => [3]
console.log(arryOne);           // 原有数组改变  => []

/*======================================================================*/

//splice()实现修改:
var arryTwo = [100,200,300,400,500,600];
var atResult_1 = arryTwo.splice(1,3,999);   //从索引1开始3个项被删除,并且替换成999
console.log(atResult_1);           // 返回被删除的项 => [200,300,400]
//原有数组发生改变
console.log(arryTwo);       // 删除的内容被替换,lenght也发生改变 => [100,999,500,600]

/*======================================================================*/

//splice()实现增加:
var arryThree = [9,8,7,6,5,4,3,2,1];
var athreeResult = arryThree.splice(1,0,'aaa'); //从索引1开始删除0个项,'aaa'被插入到索引1的前面
console.log(athreeResult);      // 一项都不删除,返回值为空数组 => []
console.log(arryThree);         //原有数组发生改变 => [9,'aaa',8,7,6,5,4,3,2,1]

你可能感兴趣的:(数组中常用的方法 -- 增加、删除以及修改)