数组有哪些方法,是否改变原数组

数组有哪些方法,是否改变原数组

concat
返回合并后的数组,不会改变原数组

//将两个数组合并成一个数组
let a = [1,2,3]
let b = [4,5,6]
let c= a.concat(b) //[1,2,3,4,5,6]
//和push区别
let d = a.push(b) // [1,2,3,[4,5,6]] 

join
返回字符串,不会改变原数组

//join() 方法用于把数组中的所有元素放入一个字符串。
let a = [1,2,3]
let b = a.jion('-')// '1-2-3'
let c = a.join() // '123'

reverse
会改变原数组

//将数组里面元素翻转
let a = [1,2,3]
a.reverse() // [3,2,1]

push
将一个元素从数组的最后面添加,会改变原数组

let a = [1,2,3]
let b = [4,5,6]
a.push(b) // [1,2,3,[4,5,6]] 
a.push(7) // [1,2,3,[4,5,6],7] 

pop
将数组头部删除一个元素,返回被删除的元素会改变原数组

let a = [1,2,3]
let b = [4,5,6]
a.pop() // [2,3]  

unshift
将数组头部增加一个元素,会改变原数组

let a = [1,2,3]
let b = [4,5,6]
a.unshift(b) // [[4,5,6],1,2,3] 
a.push(7) // [7,[4,5,6],1,2,3] 

shift
将数组尾部删除一个元素,返回被删除的元素会改变原数组

let a = [1,2,3]

a.shift() // [1,2]  

slice
截取,返回被截取的对象以数组的形式,不会改变原数组

arrayObject(start,end)
3、使用说明

参数一:开始截取的下标位置

参数二:结束截取下标位置,但是不会截取到该位置上的值

slice()方法是可以操作字符串,也可以操作数组,splice是不可以操作字符串,只能操作数组。

4、返回值

是一个新的数组,原数组没有改变,start就是从哪开始截取,返回的是把原数组截取之后的数组。

splice
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi");
fruits 输出结果:

Banana,Orange,Lemon,Kiwi,Apple,Mango

sort
排序方法,会改变原数组

let a = [9,5,6,2,1,4]
a.sort() // [1,2,4,5,6,9]

isArray
判断一个值是不是数组,不会改变原数组
也有其他方法typeof()/instanceof()等

let a = [9,5,6,2,1,4]
let b = '456'
a.isArray()//true
b.isArray()//false

inCludes
检测数组 site 是否包含 一个指定元素,不会改变原数组

let site = ['runoob', 'google', 'taobao'];
 
site.includes('runoob'); 
// true 
 
site.includes('baidu'); 
// false

toString()
toString()方法用于将数组转换为字符串。 使用数组名称调用它,并返回包含以逗号分隔的数组元素的字符串。()

数组循环方法:

for
for 循环在JavaScript 刚萌生的时候就出现了,for循环是使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。for循环没有返回值,会改变原数组

for (var i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

forEach
遍历数组中的每一项,没有返回值,对原数组没有影响,但不支持IE,通过下标也会改变原数组

arr.forEach((value, index, array) => {
	// 参数一是: 数组元素
	// 参数二是: 数组元素的索引
	// 参数三是:当前的数组
})

forOf
for-of 循环是ES6新增特性,for-of 的功能不仅仅用于遍历数组,它还可以 遍历字符串、遍历类数组对象、支持 Map 和 Set 对象遍历

let arr = [1, 2, 3, 4];
for (let item in arr) {
    console.log(item) // 遍历每个元素 1 2 3 4
}

map
map() 的回调函数中支持 return 返回值,相当于把数组中的每一项改变,但并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了

let arr = [12,23,24,42,1]; 
let res = arr.map((item, index, ary) => { 
    return item*10; 
}) 
console.log(res); // [120,230,240,420,10];  原数组拷贝了一份,并进行了修改
console.log(ary); // [12,23,24,42,1];  原数组并未发生变化

filter
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组。

注意:它不会改变原始数组,但是直接返回一个新数组。

let arr = [12, 66, 4, 88, 3, 7];
let res = arr.filter((value, index, array) => {
	// 参数一是:数组元素
	// 参数二是:数组元素的索引
	// 参数三是:当前的数组
	return value >= 20;
});

console.log(res); // [66,88] 返回值是一个新数组

some
some() 是查找数组中是否有满足条件的元素,返回值是布尔值,如果查找到这个元素,就返回 true(有任意一项符合条件即返回true) , 如果查找不到就返回 false。

如果查询数组中唯一的元素,用 some 方法更合适,在 some 里面遇到 return true 就是终止遍历,迭代效率更高。

let arr = [10, 30, 4];
let flag = arr.some((value, index, array) => {
	return value < 3;
});

console.log(flag); // false 返回值是布尔值,只要查找到满足条件的一个元素就立马终止循环

every
every() 是对数组中的每一项运行给定函数,只有当该函数对每一项返回true,才返回true,否则返回false。

let arr = [1, 2, 3, 4, 5, 6];
let flag = arr.every((value, index, array) => {
	return value > 3;
});

console.log(flag); // false

find
find() 方法返回数组中符合测试函数条件的第一个元素。否则返回undefined

let ary = [{
	id: 1,
	name:'张三'
}, {
	id: 2,
	name:'李四'
}];

let res = ary.find((item, index) => item.id === 2); 
console.log(res) // {id:2,name:'李四'}
// 找数组里面符合条件的值,当数组中元素id等于2的查找出来,注意,只会匹配第一个

findindex
findIndex() 用于找出第一个符合条件的数组成员的位置,如果没有找到返回 -1。

let ary = [1, 5, 10, 15];
let resIndex = ary.findIndex((value, index) => value > 9);
console.log(resIndex); // 2
// 找数组里面符合条件的值的位置(索引),注意,只会匹配第一个

版权声明:本文为weixin_45653470原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。