js中数组的方法汇集
数组方法
返回新数组
concat() 连接两个或更多的数组,并返回结果
let arr = [1,2,3,4]; let newArr = arr.concat([5,6],7); console.log(newArr); // [1,2,3,4,5,6,7] console.log(arr); // [1,2,3,4] 原数组不变
join() 把数组的所有元素放入一个字符串 默认使用逗号作为分隔符
let arr = [1,2,3]; console.log(arr.join()); // "1,2,3" console.log(arr.join("-")); // "1-2-3" console.log(arr); // [1, 2, 3] 原数组不变
slice() 选取数组的一部分,并返回一个新的数组
let arr = [1,3,5,7,9,11]; // length:6 let newArr1 = arr.slice(1); // 从index为1开始向后截取 console.log(newArr1); // [3, 5, 7, 9, 11] let newArr2 = arr.slice(1,4); // 从index为1开始向后截取,到index为4停止,不包括4 console.log(newArr2); // [3, 5, 7] let newArr3 = arr.slice(1,-2); // -2 + 6 = 4,相当于arr.slice(1,4) console.log(newArr3); // [3, 5, 7] let newArr4 = arr.slice(-4,-1); // 相当于arr.slice(2,5) console.log(newArr4); // [5, 7, 9] console.log(arr); //[1, 3, 5, 7, 9, 11] 原数组没变
map() 通过指定函数处理数组的每个元素,并返回处理后的数组
let arr = [1, 2, 3, 4, 5]; let newArr = arr.map(function(item){ return item * item; }); console.log(newArr); // [1, 4, 9, 16, 25] console.log(arr); // [1, 2, 3, 4, 5] 原数组不变
filter() 检测数组元素,并返回符合条件所有元素的数组,实现"过滤"功能
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let newArr = arr.filter(function(item, index) { return index % 3 === 0 || item >= 8; }); console.log(newArr); // [1, 4, 7, 8, 9, 10] console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 原数组不变
toLocaleString()
toString() 以上两个都是将数组转换成字符串,并返回结果
let arr = [1,2,3,4,5]; let str1 = arr.toLocaleString(); let str2 = arr.toString(); console.log(str1); // "1,2,3,4,5" console.log(str2); // "1,2,3,4,5" console.log(arr); // [1,2,3,4,5] 原数组不变
flat() 按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回,实现数组扁平化 默认值为 1
let arr = [0, 1, 2, [3, 4]]; console.log(arr.flat()); // [0, 1, 2, 3, 4] let arr1 = [0, 1, 2, [[[3, 4]]]]; console.log(arr1.flat(2)); // [0, 1, 2, [3, 4]] //使用 Infinity,可展开任意深度的嵌套数组 let arr2 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]; console.log(arr2.flat(Infinity)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] // 扁平化数组空项,如果原数组有空位,flat()方法清除空位 let arr3 = [1, 2, , , 4, 5]; console.log(arr3.flat()); // [1, 2, 4, 5]
flatMap() 会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到子数组中的元素合并为一个新数组返回 默认值为 1
// 相当于 [[2, 4], [3, 6], [4, 8]].flat() [2, 3, 4].flatMap((x) => [x, x * 2]); // [2, 4, 3, 6, 4, 8]
entries() keys() values() 都是用于遍历数组,它们都返回一个遍历对象,可以用for...of循环进行遍历
区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历
for (let index of ['a', 'b'].keys()) { // [0,1] console.log(index); } // 0 // 1 for (let item of ['a', 'b'].values()) { // ['a','b'] console.log(item); } // 'a' // 'b' for (let [index, item] of ['a', 'b'].entries()) { // [[0,'a'],[1,'b']] console.log(index, item); } // 0 'a' // 1 'b'
改变原数组
push() 向数组的末尾添加一个或更多元素,返回新的长度,原数组改变
let arr = ["leo","is","great"]; let len = arr.push("true"); console.log(arr); // ["leo","is","great","true"] 原数组改变 console.log(len); // 4
pop() 删除数组的最后一个元素,返回删除的元素,元素组改变
// arr:["leo","is","great","true"] let item = arr.pop(); console.log(item); // "true" console.log(arr); // ["leo","is","great"] 原数组改变
unshift() 向数组的开头添加一个或更多元素,返回新的长度,原数组改变
let arr = ["leo","is","great"]; let len = arr.unshift("look"); console.log(arr); // ["look","leo","is","great"] 原数组改变 console.log(len); // 4
shift() 删除并返回数组的第一个元素,原数组改变
// arr:["look","leo","is","great"] let item = arr.shift(); console.log(item); // "look" console.log(arr); // ["leo","is","great"] 原数组改变
sort() 方法对于数组的元素进行排序,原数组改变,默认排序顺序为按字母升序
let arr = ["a", "d", "c", "b"]; console.log(arr.sort()); // ["a", "b", "c", "d"] let arr1 = [13, 24, 51, 3]; console.log(arr1.sort()); // [13, 24, 3, 51] console.log(arr1); // [13, 24, 3, 51] 原数组改变
这里可以使用a-b的方法
reverse() 反转数组的元素顺序
let arr = [1,2,3,4]; console.log(arr.reverse()); // [4,3,2,1] console.log(arr); // [4,3,2,1] 原数组改变
splice() 从数组中添加或删除元素。它有很多种用法,可以实现删除、插入和替换
1.删除元素,返回删除的元素 可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义