js 数组学习小结

所有示例代码,可利用mdn的在线编译器调试 ,传送门

1、Array.length

length是Array实例的属性。返回一个Number,表示数组的长度。

let arr = ['shoes', 'shirts', 'socks', 'sweaters'];

console.log('数组的长度:'+arr.length);//数组长度: 4

2、Array.prototype

Array.prototype是指Array的原型。Array实例继承自 Array.prototype 。可以通过修改Array.prototype,以对所有的Array对象实例进行修改。例如,通过Array.prototype给Array添加原型级方法,该方法将可以在所有的数组对象中使用

/*
如果JavaScript本身不提供 first() 方法,
添加一个返回数组的第一个元素的新方法first()。
*/ 

if(!Array.prototype.first) {
    Array.prototype.first = function() {
        return this[0];
    }
}
2.1 会改变自身的方法(即原数组值会改变)
2.1.1 Array.prototype.push()

在数组末尾添加一个或多个元素(对象),并返回数组的新长度.
参数:Object //可以是各种类型的对象
返回值:Number //改变后的数组长度

let sports = ["soccer", "baseball"];
let total = sports.push("football", "swimming");

console.log(sports); 
// ["soccer", "baseball", "football", "swimming"]

console.log(total);  
// 4

//若深究,请往下
注意:
当参数是数组时,结果并不是合并两个数组。

let sports = ["soccer", "baseball"];
let arr = ["arr1", "arr2"];
let total = sports.push(arr);

console.log(sports); 
// ["soccer", "baseball", ["arr1", "arr2"]]

console.log(total);
//3

如果需要合并两个数组,可以这样

let sports = ["soccer", "baseball"];
let arr = ["arr1", "arr2"];

// 将第二个数组融合进第一个数组
// 相当于 sports.push("arr1", "arr1");
Array.prototype.push.apply(sports, arr);

console.log(sports); 
// ["soccer", "baseball", "arr1", "arr1"]

//再深究,请往下
js 数组学习小结_第1张图片
push 方法有意具有通用性。该方法和 call() 或 apply() 一起使用时,可应用在类似数组的对象上。

了解更多,请参考mdn js文档

2.1.2 Array.prototype.unshift()

在数组的开头添加一或多个元素(对象),并返回数组的新长度。
参数:Object //可以是各种类型的对象
返回值:Number //改变后的数组长度

let sports = ["soccer", "baseball"];

console.log(sports.unshift('newSport-1','newSport-2'))
//4
console.log(sports); 
//["newSport-1", "newSport-2", "soccer", "baseball"]

//若深究,请往下
注意:
当参数是数组时,结果并不是合并两个数组。

let sports = ["soccer", "baseball"];
let arr = ["arr1", "arr2"];
console.log(sports.unshift(arr));
// 3

console.log(sports);
//[["arr1", "arr2"], "soccer", "baseball"]

注意:
调用unshift()后原数组值已经改变

let arr = [4,5,6]; 
arr.unshift(1);
arr.unshift(2);
arr.unshift(3);
console.log(arr); // [3, 2, 1, 4, 5, 6]
//注意区别于例一

unshift方法有意具有通用性。该方法和 call() 或 apply() 一起使用时,可应用在类似数组的对象上。

了解更多,请参考MDN js文档

2.1.3 Array.prototype.pop()

从数组中删除最后一个元素,并返回该元素的值。
参数:无
返回值:Object //被删除的元素(对象)

let sports = ["soccer", "baseball"];
let result = sports.pop();

console.log(sports);  // ["soccer"]
console.log(result); // baseball

  • 仅删除最后一个元素,无法做到删除指定元素
  • pop方法并不局限于数组:这个方法能够通过 call 或 apply 方法作用于类似数组的对象上。

了解更多,参考mdn js文档

2.1.4 Array.prototype.shift()

从数组中删除第一个元素,并返回该元素的值。(即:移除索引为 0 的元素(即第一个元素),并返回被移除的元素,其他元素的索引值随之减 1。)
参数:无
返回值:Object //被删除的元素(对象)

let sports = ["soccer", "baseball"];
let result = sports.shift();

console.log(sports);  // ["baseball"]
console.log(result); // soccer

  • 仅删除第一个元素,无法做到删除指定元素
  • shift方法并不局限于数组:这个方法能够通过 call 或 apply 方法作用于类似数组的对象上。

了解更多,参考mdn js文档

2.1.4 Array.prototype.splice()

删除或替换现有元素,或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。
array.splice(start, deleteCount, item)
参数:
start : Number (必填)

  • //开始的位置(0 为第一位)。即,开始进行修改的位置
  • //如果Number> 数组长度length,则从数组末尾添加内容
  • //如果Number> 0,则表示从数组末位开始的第几位。如:-1 ,即从数组末位第1位开始(length - 1)
  • 如果负数的绝对值大于数组的长度,则表示开始位置为第0位。

deleteCount : Number (可选) //整数,表示要移除的数组元素的个数。

  • 若要删除start 后的元素,deleteCount省略不写 或者 使deleteCount 大于 start 之后的元素的总数
  • 如果 deleteCount 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。

item :Object //要添加进数组的元素。从start 位置开始。如果不指定,则 splice() 将只删除数组元素。可以是多个对象

返回值: Array //由被删除的元素组成的数组

示例:
从第 2 位开始删除 0 个元素,插入“drum”

let myFish = ["angel", "clown", "mandarin", "sturgeon"];
let removed = myFish.splice(2, 0, "drum");

console.log(myFish); 
//  ["angel", "clown", "drum", "mandarin", "sturgeon"]
console.log(removed);  // []
// 被删除的元素: [], 没有元素被删除

从第 2 位开始删除 0 个元素,插入“drum” 和 "guitar"

let myFish = ["angel", "clown", "mandarin", "sturgeon"];
let removed = myFish.splice(2, 0, 'drum','guitar');

console.log(myFish); 
// ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
console.log(removed);  // []
// 被删除的元素: [], 没有元素被删除

从第 3 位开始删除 1 个元素

let myFish = ["angel", "clown", "mandarin", "sturgeon"];
let removed = myFish.splice(3, 1);

console.log(myFish); 
//["angel", "clown", "mandarin"]
console.log(removed);  //["sturgeon"]  

从第 2 位开始删除 1 个元素,插入“trumpet” 即:修改第2位(0是第一位)

let myFish = ["angel", "clown", "mandarin", "sturgeon"];
let removed = myFish.splice(2, 1,'trumpet');

console.log(myFish); //["angel", "clown", "trumpet", "sturgeon"]
console.log(removed);  //["mandarin"]

从第 0 位开始删除 2 个元素,插入"parrot"、"anemone"和"blue"

let myFish = ["angel", "clown", "mandarin", "sturgeon"];
let removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');

console.log(myFish); //["parrot", "anemone", "blue", "mandarin", "sturgeon"]
console.log(removed);  //["angel", "clown"]

从倒数第2位开始删除2个元素(倒数第0位为最后一位)

let myFish = ["angel", "clown", "mandarin", "sturgeon"];
let removed = myFish.splice(myFish.length-1 -2 , 2);   //myFish.length-3 为统一从0 开始记数,写为myFish.length-1 -2 

console.log(myFish); //["angel", "sturgeon"]
console.log(removed);  //["clown", "mandarin"]

未完待续…

1、Array.indexOf() 和Array.lastIndexOf()

2、

你可能感兴趣的:(JS)