js经常使用数组方法总结
push()
var arr = [1, 2, 3]
console.log('添加前的数组', arr)
var result = arr.push(10, 20)
console.log('返回值', result)
`向数组末尾添加一项或多项`
`返回值:添加后的数组长度`
`原数组:发生改变`
复制代码
unshift()
var arr = [1, 2, 3]
var result = arr.unshift(40, 50, 60)
console.log('添加后', arr)
console.log('返回值', result)
`向数组开头添加一项或者多项`
`返回值:添加后的数组长度`
`原数组:发生改变`
复制代码
pop()
var arr = [1, 2, 3, 'hello']
var result = arr.pop()
console.log('删除后', arr)
console.log('返回值', result)
`做用:删除数组末尾最后一项`
`原数组:发生改变`
`返回值:返回的是 删除的那一项`
复制代码
shift()
var arr = ['hello', 1, 2, 3]
console.log('删除前', arr)
var result = arr.shift()
console.log('删除后', arr)
console.log('返回值', result)
`做用:删除数组开头第一项`
`原数组:发生改变`
`返回值:返回的是 删除的那一项`
复制代码
splice()
var arr = [10, 20, 30, 40, 50]
console.log('调用前', arr)
var result = arr.splice(2)
var result = arr.splice(1, 3)
console.log('调用后原数组', arr)
console.log('返回值', result)
var result = arr.splice(1, 0, 2019, 2018)
`splice(x): 从索引x处开始 一直删除到末尾,将删除的内容组成新数组返回`
`splice(x, y): 从索引x处开始,删除y个`
`splice(x, y, ...n): 从索引x处开始,删除y个,将参数n以及后面全部参数 插入到索引x处`
复制代码
slice()
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var res = arr.slice(1, 3)
console.log('返回值', res)
`slice(x): 从索引x处开始 一直克隆到末尾,将克隆的内容组成新数组返回`
`slice(x, y): 从索引x处克隆到索引y处(不包含y项)`
`slice(-x):从arr.length加上-x处截取到数组末尾`
复制代码
concat()
var arr1 = [1, 2, 3]
var arr2 = [6, 7, 8]
var res1 = arr1.concat(arr2, 2, 'df')
console.log('返回值', res1)
`不会影响原数组`
`返回值:拼接好的内容 组成的新数组`
复制代码
join()
var arr = [1, 2, 3]
arr.join('')
arr.join('+')
`将数组转换成字符串 原数组不会发生改变`
`根据指定的链接符 组成新字符串`
复制代码
indexOf() (ES5的方法)
var arr = [1, 'a', 2, 'b', 3, 'c']
var res = arr.indexOf('b')
var res = arr.indexOf(20)
`查找某个值 在数组中的索引位置`
`返回值:查找到的那一项的索引`
`若是查找不到 就返回-1 说明数组中不存在这一项`
复制代码
lastIndexOf() (ES5的方法)
var arr = [1, 'b', 2, 'b', 3]
console.log(arr.lastIndexOf('b'))
`查找 值在数组中 最后一次出现的索引位置`
`返回值:查找到的那一项的索引`
`若是查找不到 就返回-1 说明数组中不存在这一项`
复制代码
every() (ES5的方法)
var arr = [1, 2, 3, 4];
var temp = arr.every((item, index, array) => {
return item > 2;
});
console.log(arr, temp);
var arr = [1, 2, 3, 4];
var temp = arr.every(function(item, index, array) {
return item > this.id;
}, {id: 2});
console.log(arr, temp);
`对数组中的每一项运行给定函数,若是该函数对每一项都返回true,则返回trun`
`方法的第二个参数可选,做用是设定第一个参数中的this指向,若是使用第二个参数,注意callback不能是箭头函数`
复制代码
some() (ES5的方法)
var arr = [1, 2, 3, 4];
var temp = arr.some((item, index, array) => {
return item > 2;
});
console.log(arr, temp);
`对数组中的每一项运行给定函数,若是该函数对任意一项返回true,则返回true`
复制代码
filter() (ES5的方法)
var arr = [1, 2, 3, 4];
var temp = arr.filter((item, index, array) => {
return item > 2;
});
console.log(arr, temp);
`对数组中的每一项运行给定函数,返回该函数返回true的项组成的数组`
复制代码
map() (ES5的方法)
var arr = [1, 2, 3, 4];
var temp = arr.map((item, index, array) => {
return item * item;
});
console.log(arr, temp);
`对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组`
复制代码
forEach() (ES5的方法)
var arr = [1, 2, 3, 4];
var temp = arr.forEach((item, index, array) => {
return item * item;
});
console.log(arr, temp);
`对数组中的每一项运行给定函数。无返回值`
复制代码
reduce() && reduceRight() (ES5的方法)
var arr = [1, 2, 3];
var sum = arr.reduce((prev, cur, index, array) => {
return prev + cur;
});
console.log(arr, sum);
var sum1 = arr.reduce((prev, cur, index, array) => {
return prev + cur;
}, 10);
console.log(arr, sum1);
var arr = ['h', 'e', 'l', 'l', 'o'];
var str = arr.reduceRight((prev, cur, index, array) => {
return prev + cur;
});
console.log(arr, str);
`reduce()从数组的第一项开始,逐步遍历到最后,迭代数组的全部项`
`reduceRight()从数组的第一项开始,逐步遍历到最后,迭代数组的全部项`
复制代码
find() (ES6的方法)
let arr = [1, 2, 3, 4, 5];
let temp = arr.find((item, index, array) => {
return item > 2;
})
console.log(arr, temp);
`查找数组中第一个符合条件的元素,返回该元素`
复制代码
findIndex() (ES6的方法)
let arr = [1, 2, 3, 4, 5];
let temp = arr.findIndex((item, index, array) => {
return item > 2;
})
console.log(arr, temp);
`查找数组中第一个符合条件的元素所在位置的索引,并返回该索引值`
复制代码
fill() (ES6的方法)
let arr = [1, 2, 3, 4, 5];
let temp = arr.fill('a', 2, 4);
console.log(arr, temp);
`用指定元素,填充数组从start(包括)到end(不包括)之间的元素,若是该区间内已经有元素,直接替换掉`
复制代码
includes() (ES7的方法)
let arr = [1, 2, 3, 4, 5];
let temp = arr.includes(5);
console.log(arr, temp);
let arr1 = [NaN, 'a'];
let temp1 = arr1.includes(NaN);
let temp2 = arr1.indexOf(NaN);
console.log(temp1, temp2);
`判断数组中是否包含指定的元素`
复制代码