js数组方法大全(开发必会)

news2025/1/8 5:56:11

前言

js中数组的方法还是有很多的,而且js中数组操作方法我说是一个前端开发必须熟练使用和掌握的我想没有人反对吧。

说真的,数组这些api本身还是需要死记硬背的,就像乘法口诀表,很多东西你需要很熟练的就能写出来。就像让你去找数组里面符合条件的元素,你总可能定义一个空数组,用原生for循环,将符合条件的都给添加到数组里面吧。那这种级别的开发对于个人来说,绝对是掉价行为。

虽说不难,虽说是基础,但是Array的方法很多,小到经典todoList,大到造轮子,整算法,都是离不开的。

你要是遇到数组方法还需要临时查的话,那你不管是去看业务代码,还是轮子源码,都是很痛苦的。

注:本人手敲党,其实很多方法可以利用参数实现更多的功能,这里我就不写了,我就写常用的功能,至于那些比较偏或者很复杂并且基本和实际业务绑定不起来的我就不写了。如果想深入研究每一个方法的每一个作用,那可以去mdn或者官方文档上去看。

模板

我会按照个方法的参数,功能,返回值进行逐一的讲解,并且对每一个方法都写出自己的测试demo及应用场景,这里我就按照固定顺序来了。

console.log(Array.prototype)

 

测试

1. at  (查询序列)

at方法在mdn上是查不到的,因为这个方法是ES13出的

参数:

参数1:number类型的值

功能:

查找数组中特定顺序的元素

参数大于等于0,正着查。负数是查倒数的,数组没有这个序列的,返回undefined

返回值:

数组中序列为参数的元素 || undefined

 测试
    let arr = [1,'2',false,{name:'序列3'}]
    console.log(arr.at(2),'输出1')
    console.log(arr.at(-1),'输出2')
    console.log(arr.at(4),'输出3')
    console.log(arr.at(-5),'输出4')

 使用场景:

需要取数组中具体某个序列的值

 2. concat (合并)

参数:

多个参数,任意值

功能:

将所有的参数拼接,形成一个新的数组

返回值:

新的合并数组

不改变原数组

测试
    let arr1 = ['1','2']
    let arr2 = [2,3]
    let arr3 = ['2',3,{name:'对象类型'}]
    console.log(arr1.concat(arr2),'第一次合并')
    console.log(arr1.concat(arr3),'第二次合并')
    console.log(arr1,arr2,arr3,'原数组不变')

使用场景:

合并多个数组可以用到

 3. constructor  (创建数组)

参数:

数字,不小于0  || 空

功能:

只传一个参数:number类型创建一个长度为参数的数组,不传就是0

传多个参数:按照顺序作为新数组的元素

返回值:

创建的新数组

测试
    //constructor方法
    let arr1 = new Array()
    console.log(arr1,'新数组')
    let arr2 = new Array(2)
    console.log(arr2,'长度为2的新数组')
    let arr3 = new Array(1,'2',{name:'对象元素'})
    console.log(arr3,'自定义元素的数组')

    //另一种写法
    let arr4 = Array.prototype.constructor(1,'2','冷门写法')
    console.log(arr4,'冷门写法')

 

 注意:

那种冷门写法基本没人那么写,但是你要知道他是干啥的

使用场景:

创建新数组,或者某个长度的数组和fill方法配合使用效果不错

4. copyWithin (复制位移)

参数

参数1:复制序列到该位置。负数从末尾计算,大于当前数组长度则不生效。

参数2:开始复制的起始位置。负数从末尾计算,大于当前数组长度则不生效。

参数3:复制的结束为位置。负数从末尾计算。

功能

复制位移和替换的操作集合。

返回值:

操作的数组,原数组发生变化

测试
    let arr1 = [1,2,3,4,5,6]
    console.log(arr1.copyWithin(2),'(2)')
    console.log(arr1,'改变的arr1')
    let arr2 = [1,2,3,4,5,6]
    console.log(arr2.copyWithin(-3),'(-3)')
    let arr3 = [1,2,3,4,5,6]
    console.log(arr3.copyWithin(2,1),'(2,1)')
    let arr4 = [1,2,3,4,5,6]
    console.log(arr4.copyWithin(2,-1),'(2,-1)')
    let arr5 = [1,2,3,4,5,6]
    console.log(arr5.copyWithin(-2,2),'-2,2')
    let arr6 = [1,2,3,4,5,6]
    console.log(arr6.copyWithin(2,0,2),'(2,0,2)')

使用场景

将数组的某段进行替换

5. entries (迭代器)

参数

功能

调用函数返回一个迭代器

返回值

迭代器

测试
    let arr1 = [1,'2',true,{name:'4号'}]
    let iterator = arr1.entries()
    console.log(iterator,'迭代器')
    console.log(iterator.next(),'迭代一次')
    console.log(iterator.next(),'迭代二次')
    console.log(iterator.next(),'迭代三次')
    console.log(iterator.next(),'迭代四次')

    let arr2 = ['一','二','三']
    for(const [index,val] of arr2.entries()){
        console.log(index,val,`迭代器循环第${index+1}次`)
    }

使用场景

处理一些异步时会用到

6. every (全量符合)

参数:

一个嵌入的判断函数

功能:

判断数组内元素是否全量符合条件

返回值

全部符合为true,有任一不符合的都是false

    let arr = [10,11,12,13]
    console.log(arr.every(item =>item >=10),'全部大于等于10')
    console.log(arr.every(item=>item%2 === 0),'全部是偶数')

使用场景

判断是不是所有数据都符合要求

7. fill (填充数组)

参数

参数1:填充的内容

参数2:起始位置,负数为倒着来

参数3:结束位置

功能

给数组填充字段

返回值

填充完毕的数组

测试
    let arr1 = new Array(4)
    arr1.fill('哈哈')
    console.log(arr1,'arr1')

    let arr2 = [0,0,0,0,0,0,0]
    arr2.fill('填充值',2)
    console.log(arr2,'arr2')
    let arr3 = [0,0,0,0,0,0,0]
    arr3.fill('填充值',2,5)
    console.log(arr3,'arr3')
    let arr4 = [0,0,0,0,0,0,0]
    arr4.fill('倒着来',-3)
    console.log(arr4,'arr4')

使用场景

可以给空数组填充,或者是数组某段的值进行替换

8. filter (过滤)

参数:

过滤的条件函数

功能:

将符合功能的值形成一个新的数组

返回值:

符合过滤条件的新数组

测试
    let arr1 = [1,2,3,4,5,6]
    let arr2 = arr1.filter(item=>item%2 === 0)
    console.log(arr1,'原数组')
    console.log(arr2,'新数组')

使用场景

把一条数组类型的数据中所有符合条件的元素都收集起来

9.find (第一个符合条件的具体元素)

参数:

条件函数

功能:

查找数组中第一个符合元素的值

返回值:

第一个符合条件的值

测试
    let arr = [{name:'name1',age:26},{name:'name2',age:28},{name:'name3',age:26}]
    console.log(arr.find(item=>item.age === 26),'查得到')
    console.log(arr.find(item=>item.name === 27),'查不到')

使用场景

获取数组列表中第一个符合条件的元素

10. findIndex(第一个符合条件的索引)

参数:

条件函数

功能:

查找数组中第一个符合元素的索引值

返回值:

第一个符合条件的索引值

测试
    let arr = [{name:'name1',age:26},{name:'name2',age:28},{name:'name3',age:26}]
    console.log(arr.findIndex(item=>item.age === 28),'查得到')
    console.log(arr.findIndex(item=>item.name === 27),'查不到')

11. findLast (从末尾找符合元素)

参数:

条件函数

功能:

查找数组中最后一个符合元素的索引值

返回值:

最后一个符合条件的索引值

测试
    let arr = [{name:'name1',age:26},{name:'name2',age:28},{name:'name3',age:26}]
    console.log(arr.findLast(item=>item.age === 26),'查得到')
    console.log(arr.findLast(item=>item.name === 27),'查不到')

使用场景

查找数组中最后一个匹配条件的元素 

12. findLastIndex(从末尾找符合的索引)

参数:

条件函数

功能:

从末尾匹配第一个符合条件的索引

返回值:

最后一个符合的索引值

测试:
        let arr = [{ name: 'name1', age: 26 }, { name: 'name2', age: 28 }, { name: 'name3', age: 26 }]
        console.log(arr.findLastIndex(item => item.age === 28), '查得到')
        console.log(arr.findLastIndex(item => item.name === 27), '查不到')

13. flat方法(数组扁平化)

参数:

扁平拆开的程度,传Infinity是全部层级都展开

功能:

按照层级去将数组扁平化

返回值:

展开的新数组,不改变原数组

测试
        let arr = [1, 2, [3, 4], [5, 6, [7, 8, [9, 10]]]]
        let arr1 = arr.flat()
        let arr2 = arr.flat(2)
        let arr3 = arr.flat(Infinity)
        console.log(arr, '原数组')
        console.log(arr1, '展开一层')
        console.log(arr2, '展开两层')
        console.log(arr3, '全部展开')

使用场景

按照需求将数组数据进行平铺

14. flatMap(flat和map方法合并使用的一个方法)

参数:

一个处理的功能函数

功能:

对数组中的每个元素应用给定的回调函数,然后将结果展开一级,返回一个新数组。等价于map+flat

返回值:

新的数组

测试
        let arr = [1, 2, 3]
        console.log(arr.flatMap(item => item === 2 ? ['哈哈', '呵呵', '嘿嘿', 'wjt'] : 1), '结果')

15. forEach(典型循环)

最基础也是用的最多的函数

参数:

操作函数,函数参数1是循环的元素,函数参数2为索引

功能:

对数组进行循环

返回值:

无返回值

测试
        let arr = [{ name: 'wjt', age: 28 }, { name: 'mashi', age: 28 }]
        arr.forEach((item, index) => {
            console.log(item, index, '循环')
        })

使用场景

太多了,太常用了,基本上循环就能用到

16. includes(是否包含)

参数:

某个指定元素

功能:

查看数组中是否包含某元素

注:对象(引用)类型和值(基础)类型不同,因为对象是内存地址,所以会是false

返回值:

布尔值

测试
        let arr = [1, 2, 3, 4, 5, { name: 'wjt' }]
        console.log(arr.includes(3), '包含数字')
        console.log(arr.includes({ name: 'wjt' }), '包含对象')
        console.log(arr.includes('2'), '不包含')

17. indexOf(查找元素出现的第一个位置)

参数:

具体元素

功能:

返回元素在数组中第一次出现的索引

返回值

存在返回索引,不存在返回-1

测试
        let arr = [1, 2, '3', '4', false]
        console.log(arr.indexOf(2), '数字2')
        console.log(arr.indexOf(3), '数字3')
        console.log(arr.indexOf(false), 'false值')

使用场景

查找某个值元素在数组中的位置

18. join (数组转字符串)

参数:

组合字符串的间隔字符

功能:

将数组合并形成字符串

返回值:

字符串

测试
        let arr1 = [1, 2, 3, '4']
        console.log(arr1.join('|'), '|为分隔号')
        console.log(arr1.join('?'), '?为分隔号')
        let arr2 = [{ value: '1' }, [1, 2, { value: 2 }], 3, [4, '5']]
        console.log(arr2.join('|'), '复杂元素')

使用场景

对于值类型元素数组进行字符串拼接

19. keys(生成迭代器)

参数:

功能:

生成一个迭代器

返回值:

迭代器

测试
        let arr = ['value1', 'value2']
        let iterator1 = arr.keys()
        console.log(iterator1, '迭代器')
        console.log(iterator1.next(), '迭代一次')
        console.log(iterator1.next(), '迭代两次')

20. lastIndexOf(倒着查询值索引)

参数:

值类型

功能:

倒着查询该元素在数组第一次出现的索引

返回值:

索引值 或者 -1

测试
        let arr = [1, 2, 3, 4, 5, 6]
        console.log(arr.lastIndexOf(3), '存在')
        console.log(arr.lastIndexOf('4'), '不存在')

使用场景

倒查值第一次出现的位置

21. map(循环操作所有元素)

参数:

操作函数

功能:

对数组进行遍历和修改值操作

返回值:

新的数组

测试
        let arr1 = [1, 2, 3, 4]
        let arr2 = arr1.map(item => item = item + 1)
        console.log(arr1, '原数组')
        console.log(arr2, '新数组')

使用场景

很多,react里经常用map遍历数组

22. pop(末尾删除一个元素)

参数:

功能:

从数组末尾删除一个元素

返回值:

被删除的元素,数组为空时返回undefined

测试:
        let arr = [1, 2, 3, 4, 5]
        console.log(arr.pop(), '返回值')
        console.log(arr, '数组')

使用场景

删除数组最后一个元素

23. push(末尾添加一个元素)

参数:

功能:

从末尾添加一个元素

返回值:

添加的元素

测试
        let arr = [1, 2]
        console.log(arr.push(3), '返回值')
        console.log(arr, '数组')

 

使用场景

从数组末尾添加一个元素,感觉是用的最多的方法之一

24. reduce(累加操作)

参数:

参数1为功能函数

参数2是默认初始值

功能

每个元素按序执行参数1函数,并且每次执行完的结果作为下一次的参数传入

返回值

最终所有函数执行完毕的结果值

测试
        let arr = [1, 2, 3, 4, 5]
        let initValue = 0
        let overValue = arr.reduce((item1, item2) => item1 + item2, initValue)
        console.log(overValue, '最终的求和结果')

使用场景

求数组元素之和

25. reduceRight(从右至左累加)

参数:

参数1:操作函数

参数2:初始值

功能:

从右向左的累加操作

返回值

最后累加的返回值

测试
        let arr = [1, 2, 3, 4, 5, 6]
        let overValue = arr.reduce((item1, item2) => item1 + item2)
        console.log(overValue, '最终的求和结果')

使用场景

值累加操作

26.reverse(排序反转)

参数:

功能:

将数组的所有元素进行一个反转

返回值:

返回的新数组,同时改变原数组

测试
        let arr = [1, 2, 3, 4, 5, 6]
        let newArr = arr.reverse()
        console.log(arr, '原数组')
        console.log(newArr, '新数组')

使用场景

将数组进行反转,逆转乾坤!!!

27. shift(删除第一个元素)

参数:

功能:

删除数组第一个元素

返回值:

删除的元素

测试
        let arr = [1, 2, 3, 4, 5, 6]
        console.log(arr.shift(), '返回值')
        console.log(arr, '原数组')

使用场景:

删除数组第一个元素

28.slice(数组截取)

参数:

参数1:截取开始索引,负数为倒数

参数2:截取截止索引,负数为倒数

功能:

截取数组某段

返回值:

截取的新数组

测试
        let arr = [1, 2, 3, 4, 5, 6]
        let arr1 = arr.slice(2)
        console.log(arr1, '从索引2位置截取至结束')
        let arr2 = arr.slice(2, 5)
        console.log(arr2, '从索引2截取到索引5的位置')
        let arr3 = arr.slice(-2)
        console.log(arr3, '从倒数第二个位置截取到结束')
        let arr4 = arr.slice(-4, 5)
        console.log(arr4, '从倒数第四个位置截取到索引5')

使用场景

截取数组某个阶段的值

29.some(数组中是否存在一个或多个符合条件的元素)

参数:

判断条件的函数

功能:

判断数组中是否存在一个或多个符合条件的元素

返回值:

布尔值

测试:
        let arr = [{ value: 1 }, { value: 2 }, { value: 3 }]
        console.log(arr.some(item => item.value > 2), '存在的情况')
        console.log(arr.some(item => item.value === '3'), '不存在的情况')

使用场景

判断数组中是否存在符合条件的元素,很常用的方法之一

30.sort(排序)

参数:

数组元素为数字类型,就会按照大小排序

排序函数

功能:

对数组内元素进行排序

返回值:

排序完成的数组

测试
        let arr1 = [1, 20, 59, 10, 29, 23]
        let sortArr1 = arr1.sort()
        console.log(arr1, '原数组')
        console.log(sortArr1, '数字数组排序')

        let arr2 = [
            { name: 'person1', age: 18 },
            { name: 'person2', age: 30 },
            { name: 'person3', age: 22 },
            { name: 'wjt', age: 28 },
            { name: 'mashi', age: 29 }
        ]
        let sortArr2 = arr2.sort((item1, item2) => {
            if (item1.age < item2.age) {
                return -1
            }
            if (item1.age > item2.age) {
                return 1
            }
            return 0
        })
        console.log(arr2, '原数组')
        console.log(sortArr2, '根据函数排序')

 使用场景

对数组进行排序

31.splice(定点删除和插入新值)

参数:

参数1:索引位置

参数2:删除元素个数

参数3-参数n:后续插入到数组里面的元素

功能:

对数组某段数据进行删除,也可以再往数组里面添加新的数据

返回值:

将删除的元素的组成一个数组,没有就是空数组

测试
        let arr1 = [1, 2, 3, 4, 5, 6, 7]
        let newArr1 = arr1.splice(2, 6)
        console.log(arr1, '原数组arr1')
        console.log(newArr1, 'newArr1,被删除的元素组成数组')
        let arr2 = [1, 2, 3, 4, 5, 6, 7]
        let newArr2 = arr2.splice(2, 6, 'newVal1', 'newVal2')
        console.log(arr2, '原数组arr2')
        console.log(newArr2, 'newArr2数组')
        let arr3 = [1, 2, 3, 4, 5, 6, 7]
        let newArr3 = arr3.splice(3, 0, 'newVal1', 'newVal2')
        console.log(arr3, '原数组arr3', '从索引3位置不删除插入新值')
        console.log(newArr3, 'newArr3', '没有删除元素,所以是空数组')

 使用场景

在数组某位置插入元素,或者替换某元素

32.toLocaleString(数组转字符串)

参数:

 具体看mdn吧,不常用,描述起来也不没有那么的简单,哈哈

功能:

数组元素转字符串

返回值:

字符串

测试
        let arr = [1, 2, 3, 4, 5, 6]
        console.log(arr.toLocaleString())

 使用场景

简单值类型拼接字符串

33.toString(数组字符串化)

参数:

功能:

值类型数组元素字符串化

返回值:

字符串

测试
        let arr = [1, 2, 3, 4, 5, 6]
        console.log(arr.toString(), '字符串')

 使用场景

值类型拼接字符串

34.unshift(数组头添加元素)

参数:

元素

功能:

数组头部增加元素

返回值:

数组长度

测试
        let arr = [1, 2, 3]
        console.log(arr.unshift(0), '返回值')
        console.log(arr, '原数组')

 

使用场景

数组头部添加元素

35.values(迭代器)

参数:

功能:

返回一个迭代器

返回值:

迭代器

测试
        let arr = ['a', 'b', 'c']
        let iterator = arr.values()
        for (const val of iterator) {
            console.log(val, '迭代元素')
        }

 

 36.with方法(替换)

参数:

参数1:索引位置

参数2:新元素

功能:

某索引位置的值替换

返回值:

新的替换完毕的数组,不改变原数组

测试
        let arr = [1, 2, 3, 4, 5]
        console.log(arr.with(2, '新的2'))
        console.log(arr, '原数组')

 

使用场景

某位置替换值

37.from(将类数组转化为数组)

参数:

类数组

功能:

将类数组转化为数组,就可以让类数组操作数组的功能函数

返回值:

数组

测试:
        function fn(a, b, c) {
            let arr = Array.from(arguments)
            console.log(arguments, '类数组')
            console.log(arr, '数组')
        }
        fn(1, 2, 3)

 

 结束语

其实呢,我并没有将所有的方法都写进去,还有一些很特殊的用法也没有写,后续我会补充一个关于数组扩展的文档。

但基本在开发中常用的,包括一些不常用的我这里也基本都罗列了,而且都是实测demo,对于需要复习和记忆的人应该是有帮助的。

这次还是花了点时间的,接近万字纯手敲感觉还行的给个关注点赞收藏吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1275246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前向与反向过程的全连接与链式求导法则

在深度学习中&#xff0c;全连接神经网络是一种常见的模型结构。它由多个神经元按层连接而成&#xff0c;每个神经元都与前一层的所有神经元相连。在训练这样的模型时&#xff0c;我们通常需要计算损失函数对各层参数的梯度。本文将介绍前向与反向过程的全连接与链式求导法则&a…

C++基础 -24- 覆盖

覆盖的三个条件 -1- 基类和派生类存在同名的函数 -2- 基类的函数为虚函数 -3- 必须使用基类引用或指针指向派生类 #include "iostream"using namespace std;class base {public:base(){}virtual void show(){cout << "base show" << endl;} };…

微信小程序自定义顶部导航栏的胶囊和微信自带的胶囊一样的透明背景色

想要实现微信自带的右上角胶囊背景透明很简单&#xff0c;只需要在pages.js里面设置下面配置就可以了&#xff1a; "navigationStyle": "custom","navigationBarTextStyle": "white" 但是设置完这个后&#xff0c;胶囊的背景色是那种…

【android开发-04】android中activity的生命周期介绍

1&#xff0c;返回栈 android中使用任务task来管理activity&#xff0c;一个任务就是一组存放在栈里的活动的集合&#xff0c;这个栈被称为返回栈。栈是一种先进先出的数据结构。当我们启动一个新的活动&#xff0c;他会在返回栈中人栈&#xff0c;并处以栈顶的位置&#xff0…

c题目13:验证100以内的数是否满足哥德巴赫猜想。(任一大于2的偶数都可以写成两个质数之和)

每日小语 活下去的诀窍是&#xff1a;保持愚蠢&#xff0c;又不能知道自己有多蠢。——王小波 自己思考 即要让第一个质数与这个数减去第一个质数的值都为质数&#xff0c;所以要满足几个条件 1.abc 2.a为质数 3.b为质数 这里是否可以用到我之前刚学的自己设置的那个判断…

matlab 混沌动力学行为-分岔图-李雅普指数等

1、内容简介 略 24-可以交流、咨询、答疑 2、内容说明 混沌动力学行为-分岔图-李雅普指数等 包含各种类型的混沌模型求解&#xff0c;包含其分叉图、李雅普指数等 混沌、分叉图、李雅普指数 3、仿真分析 略 4、参考论文 略 链接&#xff1a;https://pan.baidu.com/…

MySQL之性能分析和系统调优

MySQL之性能分析和系统调优 性能分析 查看执行计划 EXPLAIN EXPLAIN作为MySQL的性能分析神器&#xff0c;可以用来分析SQL执行计划&#xff0c;需要理解分析结果可以帮助我们优化SQL explain select … from … [where ...]TABLE 表名 查询的每一行记录都对于着一张表 id 该…

CCC数字车钥匙(八)——BLE配对相关字段

2.1 配对连接协议 2.1.3 所有者配对广播 对于所有者配对&#xff0c;仅支持Legacy LE 1M PHY。ADV_IND需要按照Section 2.3.1.1 Volume 6 Part B。 事件类型&#xff1a;无指向可连接和可扫描。 ADV_IND中包含广播地址和广播数据&#xff0c;如下所示&#xff0c;其中广播地址…

火狐插件(附加组件)发布流程

1、进入开发者中心 开发者中心 :: Firefox 附加组件https://addons.mozilla.org/zh-CN/developers/ 路径&#xff1a; 2、首次使用会自动打开注册登录页 3、注册登录后点击 提交你的第一个附加组件 4、此时需要进行两步验证 5、点击身份验证应用 在打开的页面中根据个人实际…

外包搞了3年,感觉技术退步很明显......

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

数据结构-错题整理(1)-23/11/27

一&#xff1a; 题目&#xff1a; 广义表即我们通常所说的列表&#xff08;lists)。它放松了对表元素的原子性限制&#xff0c;允许他们有自身结构。那么广义表E((a,(a,b),((a,b),c)))的长度和深度分别为&#xff1f; 答案为1和4 知识点&#xff1a; 广义表的长度和深度 长…

【RT-DETR改进】InnerIoU思想结合传统 EIoU、SIoU、WIoU损失思想(小目标涨点效果明显)

论文地址&#xff1a;官方Inner-IoU论文地址点击即可跳转 官方代码地址&#xff1a;官方代码地址-官方只放出了两种结合方式CIoU、SIoU 本位改进地址&#xff1a; 文末提供完整代码块-包括InnerEIoU、InnerCIoU、InnerDIoU等七种结合方式和其AlphaIoU变种结合起来可以达到二十…

卡码网15 .链表的基本操作III

链表的基础操作III 时间限制&#xff1a;1.000S 空间限制&#xff1a;128MB 题目描述 请编写一个程序&#xff0c;实现以下链表操作&#xff1a;构建一个单向链表&#xff0c;链表中包含一组整数数据。 1. 实现在链表的第 n 个位置插入一个元素&#xff0c;输出整个链表的…

有IP没有域名可以申请证书吗?

一、IP证书是什么&#xff1f; ip证书是用于公网ip地址的SSL证书&#xff0c;与我们通常所讲的SSL证书并无本质上的区别&#xff0c;但由于SSL证书通常颁发给域名&#xff0c;而组织机构需要公共ip地址的SSL证书&#xff0c;这类SSL证书就是我们所说的ip证书。ip证书具有安全、…

C++ 学习 之 类的初始化与逗号运算符的联动

我们来看一个代码 class A { public:A(int x) {cout << "123" << endl;}A(int x, int y) {cout << "456" << endl;}}a (1, 2); int main() {} 这个代码的输出结果是什么&#xff1f; 答案是 123 因为编译器把 ( 1 , 2 ) 识别…

mysql区分大小写吗

mysql在windows下默认是不区分大小写的&#xff0c;在linux下默认是区分大小写的。 所以&#xff0c;为了避免出问题&#xff0c;许多公司的数据库编程规范中明确规定&#xff1a;库名、表名、列名、索引名一律小写&#xff0c;不同单词之间以下划线分割&#xff0c;且控制在3…

Python+Requests模块添加cookie

请求中添加cookies 对于某些网站&#xff0c;登录然后从浏览器中获取cookies&#xff0c;以后就可以直接拿着cookie登录了&#xff0c;无需输入用户 名密码。 一、在参数中添加cookie 在发送请求时使用cookies 代码示例&#xff1a; import requests # 1&#xff0c;在参数…

如何选择 Facebook 代理?

Facebook上从事业务推广、广告或资料推广以及群组的用户需要高质量且可靠的代理。使用代理&#xff0c;用户可以在账号被封锁的情况下访问自己的资料&#xff0c;同时与多人进行即时通信&#xff0c;并能够&#xff1a; 自动发送邀请参加各种活动&#xff1b; 通过特殊的机器人…

Java流处理之序列化和打印流

文章目录 序列化概述ObjectOutputStream类构造方法序列化操作 ObjectInputStream类构造方法反序列化操作1**反序列化操作2** 案例&#xff1a;序列化集合案例分析案例实现 打印流概述PrintStream类构造方法改变打印流向 序列化 概述 Java 提供了一种对象序列化的机制。用一个…

无人巡检 | AIRIOT变电站无人机运防一体管理解决方案

传统的变电站安全管理存在着人力成本高、效率低、安全风险难以全面控制等问题&#xff0c;主要依靠人工巡检和监控设备&#xff0c;往往存在如下的运维问题和管理痛点&#xff1a; 巡检监控能力差&#xff1a;传统变电站管理系统无法对变电站进行全面的巡检监控&#xff0c;以…