js数组的方法速览---数组的静态方法,实例方法和属性合集,各包含一个示例

tip:

本文仅作为查找和基本使用的展示,需要深入了解这些方法的使用请参考:Array - JavaScript | MDN (mozilla.org)

可以通过目录快速锁定需要查找的方法和查看它的使用

目录

tip:

新建一个数组

 数组静态(类)方法

Array.from()

Array.isArray()

Array.of()

 数组实例属性

互相绑定的length

数组实例方法

 at()

concat()

 copyWithin()

  entries()

 every()

fill()

 filter()

 find()

findIndex()

 findLast()

 findLastIndex()

flat()

flatMap()

forEach()

includes()

indexOf()

join()

keys()

lastIndexOf()

map()

pop()

 push()

reduce()

reduceRight()

 reverse()

 shift()

slice()

some()

 sort()

splice()

 toReversed()

toSorted()

 toSpliced()

toString()

unshift()

 values()

with()

方法合集


新建一个数组

// 新建一个数组
let arr1 = new Array(10);// 数组构造函数 
let arr2 = [10, 20, 30]
let arr3 = Array.of(10);
console.log(arr1, arr2, arr3);

console.log("\n----------分割线----------\n");

 数组静态(类)方法

Array.from()

,将类数组对象或可迭代对象转换为数组实例

let newArray = Array.from({ 0: 'a', 1: 'b', 2: 'c' });
console.log(newArray);

console.log("\n----------分割线----------\n");

Array.isArray()

,用来判断一个值是否为数组

let isArray1 = Array.isArray(arr2);
console.log(isArray1);

console.log("\n----------分割线----------\n");

Array.of()

,将参数转换成数组实例

let newArray2 = Array.of(10, 20, 30);
console.log(newArray2);

console.log("\n----------分割线----------\n");

 数组实例属性

互相绑定的length

arr2.length = 5;
console.log(arr2);
arr2.length = 2;
console.log(arr2);

console.log("\n----------分割线----------\n");

数组实例方法

 at()

方法返回数组中指定索引处的元素,如果索引超出范围,则返回 undefined。参数为负数时从数组末尾开始计算。

let index1 = arr2.at(1);
console.log(index1);

console.log("\n----------分割线----------\n");

concat()

,连接两个或多个数组并将其返回

let newArr1 = arr2.concat([1, 2, 3]);
console.log(newArr1);

console.log("\n----------分割线----------\n");

 copyWithin()

,从数组中复制元素到同一数组中的不同位置,并返回它,不会改变原数组的长度

let newArr4 = arr2.copyWithin(0, 2);
console.log(newArr4);

console.log("\n----------分割线----------\n");

  entries()

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

let newArr5 = arr2.entries();
console.log(newArr5.next().value);

console.log("\n----------分割线----------\n");

 every()

方法测试数组中的元素有 1 个元素没通过了被提供的函数测试时返回false

let every1 = arr2.every(item => item > 2);
console.log(every1);

console.log("\n----------分割线----------\n");

fill()

,用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。参数,填充的值,起始索引默认为0,终止索引默认为arr.length。

let fill1 = arr2.fill(0, 0, 2);
console.log(fill1);

console.log("\n----------分割线----------\n");

 filter()

方法返回一个新数组,其中包含 callback 返回 true 的元素。

let newArr3 = arr2.filter(item => item > 2);
console.log(newArr3);

console.log("\n----------分割线----------\n"); 

 find()

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

let find1 = arr2.find(item => item > 2);
console.log(find1);

console.log("\n----------分割线----------\n");

findIndex()

方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。和indexof类似

let index4 = arr2.findIndex(item => item > 2);
console.log(index4);

console.log("\n----------分割线----------\n");

 findLast()

方法返回数组中满足提供的测试函数的最后一个元素的值。否则返回 undefined。和find类似

let find2 = arr2.findLast(item => item > 2);
console.log(find2);

console.log("\n----------分割线----------\n");

 findLastIndex()

方法返回 callback 返回 true 的最后一个元素的索引。和lastIndexOf类似

let index5 = arr2.findLastIndex(item => item > 2);
console.log(index5);

console.log("\n----------分割线----------\n");

flat()

方法返回一个新数组,所有子数组元素递归地连接到其中,直到指定的深度。参数为拆分的深度,默认拆分一层(1),

let arr4 = [1, 2, [3, 4, [5, 6]]].flat(2);
console.log(arr4);

console.log("\n----------分割线----------\n");

flatMap()

方法先执行 map(),再执行深度为 1 的 flat()。

let arr5 = [1, 2, [3, 4, [5, 6]]].flatMap(item => item);
console.log(arr5);

console.log("\n----------分割线----------\n");

forEach()

,循环遍历数组

arr2.forEach((item, index, arr) => {
  console.log(arr[index], "=", item);
})
console.log("\n----------分割线----------\n");

includes()

,返回一个布尔值,表示某个数组是否包含给定的值,与indexOf类似

let includes1 = arr2.includes(3);
console.log(includes1);

console.log("\n----------分割线----------\n");

indexOf()

方法在数组中搜索 指定元素 并返回第一个匹配的索引。若没有返回-1

let index2 = arr2.indexOf(4);
console.log(index2, arr2);

console.log("\n----------分割线----------\n");

join()

方法将数组中的所有元素连接成一个字符串,参数为连接符。

let str1 = arr2.join("-");
console.log(str1);

console.log("\n----------分割线----------\n");

keys()

方法返回一个包含数组中每个索引键的Array Iterator对象。

let keys1 = arr2.keys();
console.log(keys1);

console.log("\n----------分割线----------\n");

lastIndexOf()

方法在数组中搜索  指定元素  并返回最后一个匹配的索引。若没有返回-1,没有重复元素时,效果和indexOf一致

let index3 = arr2.lastIndexOf(4);
console.log(index3, arr2);

console.log("\n----------分割线----------\n");

map()

,循环遍历数组,并返回一个新数组

arr2.map((item, index, arr) => {
  console.log(arr[index], "=", item);
})

console.log("\n----------分割线----------\n");

pop()

,从数组末尾移除一个元素,并返回移除的元素

let del1 = arr2.pop();
console.log(del1, arr2);

console.log("\n----------分割线----------\n");

 push()

,向数组末尾添加一个或多个元素,并返回新的长度

let len1 = arr2.push(4, 5, 6);
console.log(len1, arr2);

console.log("\n----------分割线----------\n");

reduce()

方法会遍历整个数组并触发回调函数,回调中有两个参数,第一个是前一个回调的返回值(或者第一个值),第二个是当前遍历的元素值。reduce不会改变原数组,但回调函数会

console.log([1, 2, 4].reduce((a, b) => a + b)); // 7

console.log("\n----------分割线----------\n");

reduceRight()

方法与 reduce() 方法类似,区别在于 reduceRight() 从数组末尾向前遍历。

console.log([1, 2, 4].reduceRight((a, b) => a - b)); // 1

console.log("\n----------分割线----------\n");

 reverse()

方法原地颠倒数组元素的顺序:第一个数组元素变为最后一个数组元素,最后一个数组元素变为第一个数组元素。它返回对数组的引用。

arr2.reverse();
console.log(arr2);

console.log("\n----------分割线----------\n");

 shift()

方法从数组移出第一个元素,并返回该元素。

let del2 = arr2.shift();
console.log(del2, arr2);

console.log("\n----------分割线----------\n");

slice()

方法从数组提取一个片段,并作为一个新数组返回。

let newArr2 = arr2.slice(1, 3);
console.log(newArr2);

console.log("\n----------分割线----------\n");

some()

方法测试数组中的元素至少有 1 个元素通过了被提供的函数测试时返回true

let some1 = arr2.some(item => item > 2);
console.log(some1);

console.log("\n----------分割线----------\n");

 sort()

方法对数组的元素进行适当的排序,并返回对数组的引用。当数组内是字符时,会按照首个字符的编码顺序排序

arr2.sort();
console.log(arr2);

console.log("\n----------分割线----------\n");

splice()

方法从数组移除一些元素,并(可选地)替换它们。它返回从数组中删除的元素,这里是,从下标1的位置开始,移除两个元素,(如果有第三个参数,那么会在下标1的位置添加这个参数作为数组的元素) 后续的元素向前移动

arr2.splice(1, 2);
console.log(arr2);

console.log("\n----------分割线----------\n");

 toReversed()

和reverse一样反转一个数组的顺序,但toReversed不改变原数组,而是返回一个新数组。

let newArr7 = arr2.toReversed();
console.log(newArr7);

console.log("\n----------分割线----------\n");

toSorted()

和splice一样对数组的元素进行适当的排序,但toSort不改变原数组,而是返回一个新数组。

let newArr9 = arr2.toSorted();
console.log(newArr9);

console.log("\n----------分割线----------\n");

 toSpliced()

和splice一样,从数组中移除一些元素,并(可选地)替换它们。toSplice不改变原数组,而是返回一个新数组。

let newArr8 = arr2.toSpliced(1, 2);
console.log(newArr8);

console.log("\n----------分割线----------\n");

toString()

方法将数组转换为字符串,并返回结果。

let str2 = arr2.toString();
console.log(str2);

console.log("\n----------分割线----------\n");

unshift()

方法在数组的开头添加一个或更多元素,并返回新的长度。

let len2 = arr2.unshift(0, 1, 2);
console.log(len2, arr2);

console.log("\n----------分割线----------\n");

 values()

方法返回 Array 对象中所有的值。

let values = arr2.values();
console.log(values);

console.log("\n----------分割线----------\n");

with()

方法参数1修改的位置,参数2,修改的值,返回修改后的数组

let newArr6 = [1, 2, 3, 4, 5].with(1,1);
console.log(newArr6);

console.log("\n----------分割线----------\n");

方法合集

以上展示的所有数组方法的合集,注意在使用时要区分对原数组是否有影响

// 新建一个数组
let arr1 = new Array(10);// 数组构造函数 
let arr2 = [10, 20, 30]
let arr3 = Array.of(10);
console.log(arr1, arr2, arr3);

console.log("\n----------分割线----------\n");

// 数组静态(类)方法

// from(),将类数组对象或可迭代对象转换为数组实例
let newArray = Array.from({ 0: 'a', 1: 'b', 2: 'c' });
console.log(newArray);

console.log("\n----------分割线----------\n");


// isArray(),用来判断一个值是否为数组
let isArray1 = Array.isArray(arr2);
console.log(isArray1);

console.log("\n----------分割线----------\n");

// of(),将参数转换成数组实例
let newArray2 = Array.of(10, 20, 30);
console.log(newArray2);

console.log("\n----------分割线----------\n");

// 数组实例属性

// 互相绑定的length
arr2.length = 5;
console.log(arr2);
arr2.length = 2;
console.log(arr2);

console.log("\n----------分割线----------\n");

// 数组实例方法

// at() 方法返回数组中指定索引处的元素,如果索引超出范围,则返回 undefined。参数为负数时从数组末尾开始计算。
let index1 = arr2.at(1);
console.log(index1);

console.log("\n----------分割线----------\n");

// concat(),连接两个或多个数组并将其返回
let newArr1 = arr2.concat([1, 2, 3]);
console.log(newArr1);

console.log("\n----------分割线----------\n");

// copyWithin(),从数组中复制元素到同一数组中的不同位置,并返回它,不会改变原数组的长度。
let newArr4 = arr2.copyWithin(0, 2);
console.log(newArr4);

console.log("\n----------分割线----------\n");

// entries(),返回一个新的可迭代的对象,该对象包含数组中每个索引的键值对。
let newArr5 = arr2.entries();
console.log(newArr5.next().value);

console.log("\n----------分割线----------\n");


// every() 方法测试数组中的元素有 1 个元素没通过了被提供的函数测试时返回false
let every1 = arr2.every(item => item > 2);
console.log(every1);

console.log("\n----------分割线----------\n");

// fill(),用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。参数,填充的值,起始索引默认为0,终止索引默认为arr.length。
let fill1 = arr2.fill(0, 0, 2);
console.log(fill1);

console.log("\n----------分割线----------\n");

// filter() 方法返回一个新数组,其中包含 callback 返回 true 的元素。
let newArr3 = arr2.filter(item => item > 2);
console.log(newArr3);

console.log("\n----------分割线----------\n"); 

// find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
let find1 = arr2.find(item => item > 2);
console.log(find1);

console.log("\n----------分割线----------\n");

// findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。和indexof类似
let index4 = arr2.findIndex(item => item > 2);
console.log(index4);

console.log("\n----------分割线----------\n");

// findLast() 方法返回数组中满足提供的测试函数的最后一个元素的值。否则返回 undefined。和find类似
let find2 = arr2.findLast(item => item > 2);
console.log(find2);

console.log("\n----------分割线----------\n");

// findLastIndex() 方法返回 callback 返回 true 的最后一个元素的索引。和lastIndexOf类似
let index5 = arr2.findLastIndex(item => item > 2);
console.log(index5);

console.log("\n----------分割线----------\n");

// flat() 方法返回一个新数组,所有子数组元素递归地连接到其中,直到指定的深度。参数为拆分的深度,默认拆分一层(1),
let arr4 = [1, 2, [3, 4, [5, 6]]].flat(2);
console.log(arr4);

console.log("\n----------分割线----------\n");

// flatMap() 方法先执行 map(),再执行深度为 1 的 flat()。
let arr5 = [1, 2, [3, 4, [5, 6]]].flatMap(item => item);
console.log(arr5);

console.log("\n----------分割线----------\n");

// forEach(),循环遍历数组
arr2.forEach((item, index, arr) => {
  console.log(arr[index], "=", item);
})
console.log("\n----------分割线----------\n");

// includes(),返回一个布尔值,表示某个数组是否包含给定的值,与indexOf类似
let includes1 = arr2.includes(3);
console.log(includes1);

console.log("\n----------分割线----------\n");

// indexOf() 方法在数组中搜索 指定元素 并返回第一个匹配的索引。若没有返回-1
let index2 = arr2.indexOf(4);
console.log(index2, arr2);

console.log("\n----------分割线----------\n");


// join() 方法将数组中的所有元素连接成一个字符串,参数为连接符。
let str1 = arr2.join("-");
console.log(str1);

console.log("\n----------分割线----------\n");

// keys() 方法返回一个包含数组中每个索引键的Array Iterator对象。
let keys1 = arr2.keys();
console.log(keys1);

console.log("\n----------分割线----------\n");

// lastIndexOf() 方法在数组中搜索  指定元素  并返回最后一个匹配的索引。若没有返回-1,没有重复元素时,效果和indexOf一致
let index3 = arr2.lastIndexOf(4);
console.log(index3, arr2);

console.log("\n----------分割线----------\n");

// map(),循环遍历数组,并返回一个新数组
arr2.map((item, index, arr) => {
  console.log(arr[index], "=", item);
})

console.log("\n----------分割线----------\n");

// pop(),从数组末尾移除一个元素,并返回移除的元素
let del1 = arr2.pop();
console.log(del1, arr2);

console.log("\n----------分割线----------\n");

// push(),向数组末尾添加一个或多个元素,并返回新的长度
let len1 = arr2.push(4, 5, 6);
console.log(len1, arr2);

console.log("\n----------分割线----------\n");

// reduce() 方法会遍历整个数组并触发回调函数,回调中有两个参数,第一个是前一个回调的返回值(或者第一个值),第二个是当前遍历的元素值。reduce不会改变原数组,但回调函数会
console.log([1, 2, 4].reduce((a, b) => a + b)); // 7

console.log("\n----------分割线----------\n");

// reduceRight() 方法与 reduce() 方法类似,区别在于 reduceRight() 从数组末尾向前遍历。
console.log([1, 2, 4].reduceRight((a, b) => a - b)); // 1

console.log("\n----------分割线----------\n");

// reverse() 方法原地颠倒数组元素的顺序:第一个数组元素变为最后一个数组元素,最后一个数组元素变为第一个数组元素。它返回对数组的引用。
arr2.reverse();
console.log(arr2);

console.log("\n----------分割线----------\n");

// shift() 方法从数组移出第一个元素,并返回该元素。
let del2 = arr2.shift();
console.log(del2, arr2);

console.log("\n----------分割线----------\n");

// slice() 方法从数组提取一个片段,并作为一个新数组返回。
let newArr2 = arr2.slice(1, 3);
console.log(newArr2);

console.log("\n----------分割线----------\n");

// some() 方法测试数组中的元素至少有 1 个元素通过了被提供的函数测试时返回true
let some1 = arr2.some(item => item > 2);
console.log(some1);

console.log("\n----------分割线----------\n");

// sort() 方法对数组的元素进行适当的排序,并返回对数组的引用。当数组内是字符时,会按照首个字符的编码顺序排序
arr2.sort();
console.log(arr2);

console.log("\n----------分割线----------\n");


// splice() 方法从数组移除一些元素,并(可选地)替换它们。它返回从数组中删除的元素
arr2.splice(1, 2);
console.log(arr2);

console.log("\n----------分割线----------\n");

// toReversed() 和reverse一样反转一个数组的顺序,但toReversed不改变原数组,而是返回一个新数组。
let newArr7 = arr2.toReversed();
console.log(newArr7);

console.log("\n----------分割线----------\n");

// toSorted() 和splice一样对数组的元素进行适当的排序,但toSort不改变原数组,而是返回一个新数组。
let newArr9 = arr2.toSorted();
console.log(newArr9);

console.log("\n----------分割线----------\n");

// toSpliced() 和splice一样,从数组中移除一些元素,并(可选地)替换它们。toSplice不改变原数组,而是返回一个新数组。
let newArr8 = arr2.toSpliced(1, 2);
console.log(newArr8);

console.log("\n----------分割线----------\n");

// toString() 方法将数组转换为字符串,并返回结果。
let str2 = arr2.toString();
console.log(str2);

console.log("\n----------分割线----------\n");

// unshift() 方法在数组的开头添加一个或更多元素,并返回新的长度。
let len2 = arr2.unshift(0, 1, 2);
console.log(len2, arr2);

console.log("\n----------分割线----------\n");

// values() 方法返回 Array 对象中所有的值。
let values = arr2.values();
console.log(values);

console.log("\n----------分割线----------\n");

// with() 方法参数1修改的位置,参数2,修改的值,返回修改后的数组
let newArr6 = [1, 2, 3, 4, 5].with(1,1);
console.log(newArr6);

console.log("\n----------分割线----------\n");

注意在使用时要区分对原数组是否有影响

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Next Admin 是一个基于 Vue.js 和 Element Plus 的后台管理系统模板,它支持动态路由的功能。动态路由是指根据用户权限或其他条件来动态生成路由,并在页面中进行动态展示和导航。 在 Vue Next Admin 中配置动态路由的步骤如下: 1. 首先,在项目中的路由配置文件中定义一个用于存储动态路由的数组,例如 `dynamicRoutes`。 2. 在登录成功或权限验证成功的地方,根据用户权限或其他条件,生成对应的路由配置信息,并将其添加到 `dynamicRoutes` 数组中。 3. 在路由配置文件中,将 `dynamicRoutes` 数组与其他静态路由数组并,生成最终的路由配置。 4. 使用 Vue Router 的 `addRoutes` 方法,将最终的路由配置添加到路由实例中。这样就可以在页面中动态展示和导航这些路由了。 下面是一个简单的示例代码: ```javascript // 路由配置文件 import { createRouter, createWebHistory } from 'vue-router' const staticRoutes = [ // 静态路由配置 // ... ] const dynamicRoutes = [] // 存储动态路由的数组 const router = createRouter({ history: createWebHistory(), routes: staticRoutes // 初始时只加载静态路由 }) // 添加动态路由 function addDynamicRoutes() { router.addRoutes(dynamicRoutes) } export { router, addDynamicRoutes } ``` ```javascript // 登录成功后的处理 import { addDynamicRoutes } from './router' // 根据用户权限或其他条件,生成动态路由配置 const dynamicRoutes = [ // 动态路由配置 // ... ] // 将动态路由配置添加到数组中 dynamicRoutes.forEach(route => { dynamicRoutes.push(route) }) // 添加动态路由 addDynamicRoutes() ``` 这样,在登录成功后,动态路由就会被添加到路由实例中,页面就可以根据用户权限或其他条件动态展示和导航这些路由了。请注意,这只是一个简单示例,实际项目中可能需要更复杂的逻辑来生成和管理动态路由。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值