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的方法
arr1.sort((a,b)=>{
            return a-b;
        })
这样为升序
arr5.sort((a,b)=>{
            return b-a;
        })
这样为降序
复制代码

  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个参数:要删除的第一项的位置和要删除的项数

posted @   无何不可88  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示