一、数组的常用方法

1、添加 / 删除

push()

在数组末尾添加数据, 1个或多个数据返回值为修改后的数组长度

var arr = [1, 2, 3, 4];arr.push(5,6,7)arr.push(8)console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8]

pop()

从数组末尾删除一个元素,返回值为被删除的元素

var arr = [1, 2, 3, 4, 5, 6, 7, 8]arr.pop();console.log(arr); // [1, 2, 3, 4, 5, 6, 7]

unshift()

在数组开头添加数据,返回值为修改后的数组长度

var arr = [1, 2, 3, 4, 5, 6, 7]arr.unshift(-1, 0)console.log(arr); // [-1, 0, 1, 2, 3, 4, 5, 6, 7]

shift()

从数组开头删除一个元素,返回值为被删除的元素

var arr = [1, 2, 3, 4, 5, 6]arr.shift();console.log(arr); // [2, 3, 4, 5, 6]

2、排序 / 翻转

sort()

数组排序,将数组中的元素进行排序,只能排数组中的数字元素,返回值为排序后数组

var arr1 = [8, 3, 7, 9, 89, 72]arr1.sort(); // 默认时升序,但是如果是多位数排序则从首位排序arr1.sort(function (a, b) {// return a - b;// 升序return b - a; // 降序})console.log(arr1); // [89, 72, 9, 8, 7, 3]

reverse()

数组翻转,将数组中的元素翻转,返回值为翻转后的数组

var arr = [0, 1, 2, 3, 4, 5, 6, 7]arr.reverse();console.log(arr); // [7, 6, 5, 4, 3, 2, 1, 0]

3、查找

indexOf()

查找数组中是否存在某个数据,查的到返回当前数组的下标,查不到返回-1;从前往后找

var arr = ["jack", "rose", "pink"];console.log(arr2.indexOf("pink")); // 下标2console.log(arr2.indexOf("haha")); // -1

lastIndexOf()

查找数组中是否存在某个数据,查的到返回当前数组的下标,查不到返回-1;从后往前找

var arr = ['haha', 'xixi', 'heihei']console.log(arr.lastIndexOf('xixi')) // 下标1

findIndex()

返回数组中满足提供的测试函数的第一个元素的索引

var arr = [1, 2, 3, 4, 5]console.log(arr.findIndex(item => item > 2)); // 2

find()

返回数组中满足提供的测试函数的第一个元素的值。

var arr = [1, 2, 3, 4, 5]console.log(arr.find(item => item > 2)) // 3

includes()

判断数组是否包含某个元素

var arr = [1, 2, 3, 4, 5]console.log(arr.includes(4)); // trueconsole.log(arr.includes(9)); // false

4、数组的遍历方法

forEach()

var personArr = [{name: "张三",sex: "男",age: 18,dec: "你好",},{name: "李四",sex: "男",age: 18,dec: "你真帅",},{name: "王五",sex: "男",age: 18,dec: "憨憨的",},{name: "赵六",sex: "女",age: 19,dec: "傻白甜",},{name: "孙七",sex: "男",age: 20,dec: "憨憨的",},{name: "刘八",sex: "男",age: 25,dec: "抽烟喝酒烫头",},];var obj = {name: "haha",};personArr.forEach(function (ele, index, self) {console.log(ele); // 数组中的每个元素console.log(index); // 数组中每个元素的小标console.log(self); // 元素组console.log(this); // this的指向forEach的第二个参数,如果没有第二个参数则指向window}, obj);

map()

与forEach方法用法相同,map方法有返回值,而forEach方法没有返回值

var personArr = [{name : '张三',sex : '男',age : 18,dec : '你好'},{name : '李四',sex : '男',age : 18,dec : '你真帅'},{name : '王五',sex : '男',age : 18,dec : '憨憨的'},{name : '赵六',sex : '女',age : 19,dec : '傻白甜'},{name : '孙七',sex : '男',age : 20,dec : '憨憨的'},{name : '刘八',sex : '男',age : 25,dec : '抽烟喝酒烫头'}]var a = personArr.map(function(ele,index,self){console.log(ele);console.log(index);console.log(self);console.log(this);// return { name : ele.name, age : ele.age};return true})console.log(a); // 返回一个新数组

filter()

var personArr = [{name : '张三',sex : '男',age : 18,dec : '你好'},{name : '李四',sex : '男',age : 18,dec : '你真帅'},{name : '王五',sex : '男',age : 18,dec : '憨憨的'},{name : '赵六',sex : '女',age : 19,dec : '傻白甜'},{name : '孙七',sex : '男',age : 20,dec : '憨憨的'},{name : '刘八',sex : '男',age : 25,dec : '抽烟喝酒烫头'}]var a = personArr.filter(function(ele,index,self){// console.log(ele,index,self);// return true// if(ele.sex == "男") {// return true// }return ele.sex == "男"})console.log(a);

5、数组的其他方法

concat()

将多个数组中的数据链接在一起,返回为链接好的新的数组

var arr1 = [1, 2]var arr2 = [3, 4]console.log(arr1.concat(arr2)); // [1, 2, 3, 4]

slice()

数组截取

var arr = ["jack", "rose", "pink", "haha", "xixi"];console.log(arr.slice(2,5)); // ['pink', 'haha', 'xixi']

join()

将数组转换成字符串,参数为你想用什么分割符数组中的元素

var arr = ["jack", "rose", "pink"];console.log(arr.join('')); // jackrosepinkconsole.log(arr.join('-')); // jack-rose-pink

reduce()

对数组中的每个元素执行一个提供的函数,将其结果汇总为单个返回值

var arr = [1, 2, 3, 4].reduce((accumulator, currentValue) => accumulator + currentValue, 0);console.log(arr); // 10

reduceRight()

从数组的最后一项开始,向前遍历数组元素,并累计

var arr= [1, 2, 3, 4].reduceRight((accumulator, currentValue) => accumulator + currentValue, 0);console.log(arr); // 10

every()

测试数组的所有元素是否都通过了指定函数的测试

let arr = [1, 2, 3, 4].every(item => item > 0);console.log(arr); // true

some()

测试数组的某些元素是否通过了指定函数的测试

var arr = [1, 2, 3, 4].some(item => item > 3);console.log(arr); // true

toString()

将数组转换为一个字符串,数组中的每个元素都会被转换为字符串,并用逗号分隔。这在需要将数组内容以字符串形式呈现时很有用

let arr = [1, 2, 3];let str = arr.toString();console.log(str); // 输出: "1,2,3"

toLocaleString()

返回一个表示数组元素的本地化字符串版本。对于日期对象等复杂类型,它会调用各自的 toLocaleString() 方法,而不是简单地将元素转换为字符串。这样可以根据用户的所在地区显示合适的日期格式,提供了更好的本地化支持

let dates = [new Date(), new Date(2022, 0, 1)];let dateStrings = dates.toLocaleString();console.log(dateStrings); // "12/15/2021, 1/1/2022"

entries()

返回一个数组迭代器对象,包含数组中每个索引的键值对

let arr = arr.entries();for (let entry of arr) {console.log(entry);}// [0, "a"]// [1, "b"]// [2, "c"]

keys()

返回一个数组迭代器对象,包含数组中每个索引的键

let arr = arr.keys();for (let key of arr) {console.log(key);}// 0// 1// 2

values()

返回一个数组迭代器对象,包含数组中每个索引的值

var arr = arr.values();for (let value of arr) {console.log(value);}// "a"// "b"// "c"

from()

从类数组对象或可迭代对象中创建一个新的数组实例

var arr = Array.from('hello');console.log(arr); // ["h", "e", "l", "l", "o"]

of()

根据传入的参数创建一个新数组

let arr = Array.of(1, 2, 3, 4, 5);console.log(arr); // [1, 2, 3, 4, 5]

isArray()

判断是否是一个数组

var arr = [1, 2, 3, 4, 5, 6]console.log(Array.isArray(arr)) // truevar arr1 = 'zhangsan'console.log(Array.isArray(arr1)) // false

二、类型转换

数组转字符串:

使用join()方法将数组转换为字符串并使用指定的分隔符连接数组元素

var arr = ["jack", "rose", "pink"];console.log(arr.join('')); // jackrosepinkconsole.log(arr.join('-')); // jack-rose-pink

使用toString()方法将数组转换为字符串

var arr = [1, 2, 3];var str = arr.toString();console.log(str); // "1,2,3"

字符串转数组:

字符串使用split()方法将字符串分割为一个新数组

var str = "hellow";var arr = str.split('');console.log(arr); // ['h', 'e', 'l', 'l', 'o']

使用扩展运算符(...)将字符串或伪数组转换为字符数组

var str = "hello";var arr = [...str];console.log(arr); // ["h", "e", "l", "l", "o"]// 伪数组转换成数组var list = document.querySelectorAll('div') // 获取到html中所有的div元素var arr1 = [...list]console.log(arr1) // 打印结果为数组形式的div节点列表

以上示例演示了如何使用不同的数组方法在JavaScript中操作数组,以及常见的有关数组的类型转换,希望能对你们有所帮助!