数组的基本操作方法

数组的基本操作

1、往数组中添加一个元素:
push方法(在尾部添加)unshift方法(在头部添加)
二者均返回数组长度

2、从数组中删除一个元素:
pop() 方法(在尾部删除)shift() 方法(在头部删除)
二者均返回删除元素在这里插入图片描述
总结:push()、pop()、shift()、unshift()都会改变原数组
3、提取数组中的一部分
slice() 方法:slice(开始位置,结束位置)
若只有一个参数,即无结束位置参数,则从开始到结束
若结束位置大于开始位置,则返回空数组

其中计算时不包括结束位置,不改变原素组,返回提取的新数组
当位置上的数字为正时:
在这里插入图片描述
当位置上的数字小于0时:
在这里插入图片描述
最后,原数组不改变
在这里插入图片描述
4、删除数组中的一部分元素
最终操作的结果会改变原数组
splice()方法:splice(开始位置,删除个数)返回删除的元素
在这里插入图片描述
splice(开始位置,删除个数,插入元素)
负数表示从倒数开始计算
在这里插入图片描述
5、reverse()
将数组中的元素逆转放置,操作改变原数组
在这里插入图片描述
6、sort()
sort() 方法用于对数组的元素进行排序。
请注意,下面的代码没有按照数值的大小对数字进行排序,而是按照字典进行排序
操作会改变原数组
在这里插入图片描述
7、join()
join() 方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。
若括号里什么都不写,则默认用逗号分隔
若是引号,则空白分隔
在这里插入图片描述
在这里插入图片描述
8、for…in 遍历数组
在这里插入图片描述
for in 会遍历数组内所有可枚举的属性,包括原型上的属性和方法,如下:
在这里插入图片描述
所以,for in更适合遍历对象,尽量不要使用for in 遍历数组
使用for in 遍历对象时,index为该对象的键,Object[index]能取到每个键对应的值,来看下面的例子:
在这里插入图片描述
9、concat() (连接两个或多个数组)
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。

<script>
	var arr=[1,2,3,4];
	var arr2=[11,12,13] 
	var arrCopy = arr.concat(arr2);
	console.log(arr.concat()); // [1, 2, 3, 4] (复制数组)
	console.log(arrCopy); // [1, 2, 3, 4, 11, 12, 13]
	console.log(arr); // [1, 2, 3, 4] (原数组未改变)
</script>

如果传入的参数是一个二维数组呢?

<script>
	var arr=[1,2,3,4];
	var arr2=[11,[12,13]] 
	var arrCopy = arr.concat(arr2);	
	console.log(arrCopy); // [1, 2, 3, 4, 11, Array(2)]
	console.log(arr); // [1, 2, 3, 4] (原数组未改变)
</script>

从上面代码中可以看出concat方法只能将传入数组中的每一项添加到数组中,如果传入数组中有些项是数组,那么也会把这一数组项当作一项添加到arrCopy中。

9、map()函数

和foreach类似,此方法是将数组中的每个元素调用一个提供的函数,结果作为一个新的数组返回,并没有改变原来的数组,(map也会把数组的每一项都遍历一遍),值得注意的是,map不会对空数组进行检测
在这里插入图片描述
5个迭代方法:forEach()、map()、filter()、some()、every()
10、foreach()函数
foreach会从头到尾对数组里的每个元素遍历一遍 ,他不会生成新数组,也不改变原数组,回调函数接收三个值,分别是 数组的元素,索引和当前数组。
在这里插入图片描述

11、Array.map()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。

12、filter()函数
filter为过滤的意思,也就是说它会把满足条件的元素拿出来形成一个新的数组
在这里插入图片描述
13、Array.every()
接收参数:array.every(function(currentValue,index,arr), thisValue)

thisValue :可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
如果省略了 thisValue ,“this” 的值为 “undefined”

此方法是将所有元素进行判断返回一个布尔值,如果所有元素都满足判断条件,则返回true,否则为false:

	let arr = [1, 2, 3, 4, 5]
    const h1 = value => value < 4
    const h2 = value => value < 6
    arr.every(h1 ) //false
    arr.every(h2 ) //true

14、Array.some()

此方法是将所有元素进行判断返回一个布尔值,如果存在元素都满足判断条件,则返回true,若所有元素都不满足判断条件,则返回false:

	let arr= [1, 2, 3, 4, 5]
    const h1 = value => value < 4
    const h2 = value => value > 6
    arr.some(h1) //true
    arr.some(h2 ) //false

15、Array.reduce()

此方法是所有元素调用返回函数,返回值为最后结果,传入的值必须是函数类型:

   let arr = [1, 2, 3, 4, 5]
   const add = (a, b) => a + b
   let sum = arr.reduce(add)
   //sum = 15  相当于累加的效果

与之相对应的还有一个 Array.reduceRight() 方法,区别是这个是从右向左操作的

16、Array.indexOf(item,start)

indexOf() 方法可返回数组中某个指定的元素位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。

var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple",4); //结果为 6

17、Array.lastIndexOf(item,start)

lastIndexOf() 方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。
如果要检索的元素没有出现,则该方法返回 -1。
该方法将从尾到头地检索数组中指定元素 item。开始检索的位置在数组的 start 处或数组的结尾(没有指定 start 参数时)。如果找到一个 item,则返回 item 从尾向前检索第一个次出现在数组的位置。数组的索引开始位置是从 0 开始的。
如果在数组中没找到指定元素则返回 -1。

Es6新增数组方法:
1、Array.fill()
fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

  • arr.fill(value[, start[, end]])

    value
    用来填充数组元素的值。
    start 可选
    起始索引,默认值为0。
    end 可选
    终止索引,默认值为 this.length。

例子
[1, 2, 3].fill(4); // [4, 4, 4]
[1, 2, 3].fill(4, 1); // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2); // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1); // [1, 2, 3]
[1, 2, 3].fill(4, 3, 3); // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2); // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5); // [1, 2, 3]
Array(3).fill(4); // [4, 4, 4]
[].fill.call({ length: 3 }, 4); // {0: 4, 1: 4, 2: 4, length: 3}

// Objects by reference.
var arr = Array(3).fill({}) // [{}, {}, {}];
arr[0].hi = “hi”; // [{ hi: “hi” }, { hi: “hi” }, { hi: “hi” }]

  • 10
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值