【一篇搞定JS数组】JavaScript数组使用详解

JS---数组 本篇主要对数组的常用方法进行了总结与讲解,希望对你们有所帮助。 阅读详情

JavaScript 数组 Array

1)概述/前言

与其他编程语言中的数组不同的是:

  • js数组是js中的一种特殊的(内置)对象,索引更像是属性名,只是刚好是整数。

  • 在js中,数组是无类型限制的(即数组的元素可以是任意类型,包括自定义对象)。

  • ja数组是基于零且使用32位数值索引的(从最小0到最大2^32-2)

  • js数组是动态的

  • js数组可以是稀疏的(即元素不一定有连续的索引,中间可能有缝隙)

    对于稀疏数组,length是大于所有元素的最高索引。

  • 数组从Array.prototype继承属性,这个原型定义了很多数组操作方法。(并且很多都是泛型的)

  • ES6新增定型数组:

    • 与常规js数组不同,定型数组具有固定长度和固定的数值元素类型
    • 定型函数具有极高的性能
    • 支持对二进制数据的字节级访问

下面将会从如何创建数组,一直到如何使用JS数组进行详细的介绍。(包含代码实例以及对一些易错易混的方法进行辨析),可以收藏以便不时之需。

2)创建数组
(一)Array()构造函数
var arr1 = new Array();		//创建空数组
var arr2 = new Array(20);	//创建一个包含20项的数组
var arr3 = new Array(1,2,3)	//包含三个数值的数组
(二)数组字面量表示法
var arr4 = []; //创建一个空数组
var arr5 = [20]; // 创建一个包含1项的数组
var arr6 = [1.1,true,"a",]; // 创建一个包含3个不同类型元素的数组
  • 数组字面量中的值不需要是常量,可以是任意表达式

  • 如果数组字面量中连续包含多个逗号,且逗号之间没有值,则这个数组为稀疏数组

    let count = [1,,3];	//索引0和2有元素,索引1没有元素,但是按索引访问时返回undefined
    
  • 数组字面量允许末尾出现逗号

    因此[ , ,]的长度是2不是3

(三)扩展操作符
  • 在一个数组字面量中包含另一个数组的元素
//扩展操作符
        let a = [1,2,3];
        let b = [0,...a,4];
        console.log(b);     //0,1,2,3,4,5
  • 扩展操作符适用与任何可迭代对象(可以使用for/of循环遍历)

    let digits = [..."0123456789"];
    digits	//=>["0","1",..."9:]
    

    ​

    • 实例:

    【数组 —> 集合 —> 数组】 实现数组的去重

    集合对象是可迭代的,因此要去除数组中重复的元素,一种便捷的方式就是把数组转化为集合,然后再使用扩展操作符把这个集合转换回数组。

    let letters = [..."hello world"];	//原数组
    [...new Set(letters)]	//=> ['h', 'e', 'l', 'o', ' ', 'w', 'r', 'd']
    

    ​

    ​

(四)工厂方法–Array.of()和Array.from
  • Array.of()

    • 引入

      在使用数值参数调用Array()构造函数时,这个参数指定的是数组的长度。

    ​ 但是在使用一个以上的数值参数时,这些参数则会成为新数组的元素,这也就意味着使用Array()构造函数无法创建一个只包含一个特定数值元素的数组。

    ​ 在ES6中,Array.of()函数可以解决这个问题

    • Array.of()可以使用其参数值(无论多少个)作为数组元素来创建并返回新数组
    Array.of(10)	//=>[10],可以创建一个只有一个数组元素的数组
    Array.of(1,2,3)	//=>[1,2,3]
    

    ​

  • Array.from()

    • 这个方法期待一个可迭代对象或类数组对象作为其第一个参数,并返回包含该对象元素的新数组。

    Array.from()定义了一种给类数组对象创建真正的数组副本的机制,便于后续的操作

    • 可以接受可选的第二个(函数)参数

      那么在构建数组的时候,源对象的每个元素都会传入这个函数,这个函数的返回值将替代原始值成为新数组的元素(类似后面讲到的map方法,但是在构建数组期间执行映射的效率要高于构建完毕后再映射为另一个新数组)

    ​

3)读写数组元素
  • 可以使用[ ] 操作符访问数组元素

  • JS数组是一个特殊对象,所有索引都是属性名。

    • 与其他普通对象一样,JS会将数值数组索引转化为字符串(即1=>”1“)

    • 可以使用负数或者非整数值来索引数组

      此时,数值会转化为字符串,这个字符串会作为数组对象的属性名。

      因此,JS数组没有所谓的越界说法。

4)数组长度
  • 每个数组都有length属性
    • 非稀疏数组的length属性就是数组中元素的个数
    • 稀疏数组中length属性会大于数组元素的个数
  • 改变length的值
    • 变大:不会添加新元素,只会在数组末尾创建一个稀疏的区域
    • 变小(为n):则任何索引>=n的元素都会从数组中删除
5)添加和删除数组元素
  1. 直接给新索引赋值

  2. push()方法

    • 在末尾添加一个或多个元素

    • 与push()执行相反操作的是pop(),它删除最后一个元素并返回该元素

    • 类似地,shift()方法删除并返回数组的第一个元素

    • unshift()方法

      实现将已有数组元素移动到更高索引位

  3. delete操作符

    使用delete删除数组元素

    • 不影响数组长度

    • 删除后变为稀疏数组,不会把高位索引向下移动来填充空隙

      ​

        let a =[1,2,3];
            delete a[2];
            console.log(2 in a);    //false
            console.log(a.length);  //=>3:删除元素不影响数组长度,
    
  4. splice()方法

splice()是一个可以插入、删除或者替换数组元素的通用方法。

这个方法修改length属性并按照需要向更高位或更低位索引移动数组元素。

6)迭代数组
for/of循环
// for/of 输出list的所有元素
        let list = [..."hello world"];
        for (var item of list){
            console.log(item);
        } 

如果 要对数组使用for /of 循环并且想知道每个元素的索引,可以使用数组的entries()方法和解构赋值

//[index,letter] of list.entries()
	    let list = [..."hello world"];
        let everyother = "";   
        for (let [index,letter] of list.entries()){     //[index,letter]是每次循环解构赋值的对象
            if (index % 2 === 0){	//取出奇数位字符
                everyother += letter;
            }
        }
        console.log(everyother);	//=> hlowrd
for/in循环
   //for in (索引) 输出list的所有元素
        for (var i in list)
        {
            console.log(list[i]);
        }
forEach()方法
 //forEach() 用于自身迭代的函数式方法(需要传入一个函数作用于每个非空元素)
        let list = [..."hello world"];
        delete list[0];     //forEach能感知稀疏数组,不会空元素调用函数
        let uppercase = "";
        list.forEach(letter=>{
            uppercase += letter.toUpperCase();
        })
        
        console.log(uppercase); //=> ELLO WORLD
老式for循环(优化)

当然,使用老式的for循环可以遍历数组。

在嵌套循环或是其他性能攸关的场合,推荐使用以下的两种for循环形式,只会读取一次数组长度,而不是在每个迭代中都读取一次。

//老式for循环
        
        //(正向)把数组长度保存到局部变量中
        for (let i=0,len = list.length;i<len;i++){
            console.log(list[i]);
        }

        //反向
        for (let i = list.length-1;i>=0;i--){
            console.log(list[i]);
        }
  • 以上两个例子是假定数组是稠密的,即所有元素都包含有效数据

    如果不是这个情况,那么可以在使用每个元素前进行测试:

     //跳过稀疏部分
            for (let i =0,len = list.length;i<len;i++){
                if (list[i] === undefined) continue;	
                console.log(list[i]);
            }
    
7)数组迭代器方法

下面介绍的方法用于迭代数组元素,他们会按顺序把数组的每个元素传给我们提供的函数,从而实现对数组的迭代、映射、过滤、测试和归并。

在这之前,先介绍这些方法的共同点:

  • 所有方法都接受一个函数作为第一个参数,并且对数组的每个(或某些)元素都调用一次这个函数

  • 这些方法都是可以感知稀疏数组的

  • 通常情况下,我们提供的函数都会接受到3个参数,分别是

    • 数组元素的值
    • 数组元素的索引
    • 数组本身

    通常只需要这几个参数中的第一个,可以忽略第二和第三个的值。

forEach()

forEach()在调用我们指定的函数时会给他传3个参数:数组元素的值,数组元素的索引和数组本身。

如果只关心数组的值和索引,可以把函数写成接受两个参数的形式,忽略其他参数

  //forEach()
        let data = [1,2,3,4],sum=0;
        //输出每个数组元素的下标以及对应的值
        data.forEach((value,index)=>{			//接受数组的值和索引
            console.log(`data[${index}] =  ${value}`);
        })

//输出如下:
//data[0] =  1
//data[1] =  2
//data[2] =  3
//data[3] =  4

【注意】:

  1. forEach()没有提供一种终止迭代的方式(也就是没有与常规break对等的语句)
  2. forEach()没有返回值
map()

map()方法把调用它的数组的元素传给我们指定的函数,返回这个函数的返回值构成的数组

例如:

 //map
        let a = [1,2,3];
        let b= a.map(x=>x*x);
        console.log(a);
        console.log(b);	

结果如下:
请添加图片描述

由此可见:

  • map方法不改变原来数组的值
  • 返回传入函数的返回值构成的数组。
filter()

filter方法返回一个数组。

该数组包含调用它的数组的子数组。传给它的函数应该是一个断言函数(返回true、flase)。

如果函数返回true,则传给这个函数的数组元素就是filter()最终返回的子数组的成员。实现过滤的效果:

例如:

//filter
        let a = [5,4,3,2,1];
        console.log(a.filter(x => x < 3));  //[2,1] : 返回的子数组元素为小于3的值
        console.log(a.filter( (x,i) => i%2 === 0)); // [5,3,1] : 返回的子数组元素是索引为偶数的值 

find()与findIndex()

与filter()类似,表现为遍历数组,寻找断言函数返回真值的元素。

但是不同的是,这两个方法会在断言函数找到第一个元素时停止迭代。

此时,

  • find返回匹配的元素
  • findIndex返回匹配元素的索引。

如果没有找到匹配的元素:

  • find返回undefined
  • findIndex返回 -1
every()与some()

传入这两个方法的函数也是断言函数,并且方法本身是数组断言方法(最后返回true或false)

  • every()方法类似于 “全称量词” —任意

    它只在断言函数对数组的所有元素都返回true时every( )才返回true

    //every()
            let a = [1,,2,3,4,5];z
            let every1 = a.every( x => x<10);
            console.log(every1); //true:所有元素都小于10
            let every2 = a.every( x=> x%2 === 0);
            console.log(every2);    //false: 不是所有元素都是偶数
    

    ​

  • some()方法类似于 “存在”量词—存在

    只要有一个元素让断言函数返回true,some( )就返回true

    //some()
    let a = [1,,2,3,4,5];
            let some = a.some( x => x%2 === 0);	
            console.log(some);	//true: 数组a中包含偶数
    

【注意】:every()和some()都采取了短路求值的方式(即在他们知道要返回什么的时候停止迭代数组)

  • some()在遇到断言函数第一次返回true时就返回true,全部断言都返回false时才返回false

  • every()则相反,在遇到断言函数第一次遇到false时返回false,全部断言都返回true时才返回true

reduce()和reduceRight()

reduce和reduceRight方法使用我们指定的函数来归并数组元素,最终产生一个返回值。

在函数编程中,归并时一个常见操作,有时候也称为“注入(inject)”或"折叠(fold)"

来看下面这个例子:

//reduce
        let  a = [1,2,3,4,5];
		//求和
        console.log( a.reduce((x,y)=> x+y , 0) );      // =>15 : 0 +1 +2 +3 +4 +5
		//求积
        console.log( a.reduce((x,y) => x*y ,1 ));      //=>120 :1*1*2*3*4*5
		//求最大值
        console.log( a.reduce( (x,y)=>(x>y)?x:y));      //=>5 :最大值

【分析】:

reduce接受两个参数:

  1. 第一个是执行归并操作的函数

    此时使用的函数与前面介绍的函数不同。我们熟悉的三个参数(值、索引、数组本身)在这里作为

    第二、第三、第四个参数,而第一个参数是目前为止归并操作的累计结果

  2. 第二个参数是可选的,指定了归并操作的初始值(如从0开始累加,从1开始累乘)

    • 如果传入了第二个参数,初次调用归并函数传入的参数是 ①初始值、 ②数组的第一个元素
    • 如果省略了第二个参数,那么初次调用归并函数传入的参数则分别是数组的第一、第二个元素。

    所以,在上面的求和、求积、求最大值的三个例子中,都可以不设定reduce()的第二个参数。

reduceRight()和reduce()类似,但是reduceRight是从高索引向低索引处理数组(从右到左)。

如果归并操作具有从右到左的结合性,那么可能就要用到reduceRight()

比如:

        //reduceRight()
        //计算2^(3^4)
        let b = [2,3,4];
        console.log( b.reduceRight( (exponent,base)=> Math.pow(base,exponent)) );

8)处理子函数的方法

下面再介绍几个数组的提取、替换、填充和复制切片的方法。

slice()

slice()方法返回一个数组的切片(slice)或者子数组。

接受2个参数: 分别是切片的起止位置

【注意】:

  • 起止位置是左闭右开的一个区间(包含起始位置,不包含终止位置)

    所以子数组的元素个数为两个参数的差(都为正数的情况下)

  • 如果只指定一个参数,返回的是数组从起点到数组末尾的所有元素

  • 如果两个参数有出现负数,则这个负值是相对于数组长度指定数组元素

    比如参数-1指定数组的最后一个元素

  • slice()不会修改调用它的数组。

【例子】:

  //slice()
        let a  = [1,2,3,4,5];
        console.log( a.slice(0,3)); //=>[0,1,2]
        console.log( a.slice(0));   //=>[1,2,3,4,5]
        console.log( a.slice(1,-1));    // =>[2,3,4]
splice()

splice()是对数组进行插入和删除(可以同时执行)的通用方法。

与slice()不同,splice会修改调用它的数组。

  • 删除元素

    splice()的前两个参数确定要删除的元素

    1. 第一个参数指定要删除元素的起始位置
    2. 第二个参数指定从起始位置开始要删除元素的个数。
     //splice()
    		//删除数组元素
            let a = [0,1,2,3,4,5];
            a.splice(1,2);      //从下标1开始删除2个元素:得到[0,3,4,5]
            console.log(a);     //splice会改变调用它的数组
    
  • 添加元素

    slice()在前两个参数后面还能添加任意多个的参数,表示要在第一个参数指定的位置插入到数组中的元素

    例如:

     //splice()
    		//同时在第一个参数指定的位置删除和添加元素
            let a = [0,1,2,3,4,5];
            a.splice(1,2,1,1,1);      //从下标1开始删除2个元素:得到[0,1,1,1,3,4,5]
            console.log(a);     	//splice会改变调用它的数组
    

    ​

fill()

fill方法用于在指定位置上填充数组

它可以接受三个参数(其中后两个可选):

  1. 第一个参数设定要填充的值
  2. 第二个参数设定起始索引
  3. 第三个参数设定终止索引

省略参数和出现负数参数的情况的处理方式和slice()相同。

【例子】:

      //fill()填充数组
        let a = new Array(5);   //创建一个长度为5的空数组
        a.fill(0);              //[0,0,0,0,0]
        a.fill(9,1);            //[0,9,9,9,9]
        a.fill(8,2,-1)          //[0,9,8,8,9]
copyWithin()

copyWithin()把数组切片复制到数组中的新位置。

它会就地修改并且返回修改后的数组,但是不会改变数组的长度。

  • 接受三个参数(后面两个可选):
  1. 第一个参数指定复制到的目的索引
  2. 第二、第三个参数指定切片的范围(左闭右开)
  • 省略参数和出现负数参数的情况的处理方式和slice()相同。
  • copyWithin()方法本意是作为一个高性能的方法,尤其对定型数组特别有用。
  • 即使来源和目标区域有重叠,复制也是正确的
 //copyWithin()
        let a = [1,2,3,4,5];
        a.copyWithin(1);   //[1,1,2,3,4]:把数组元素复制到索引1及之后(不改变数组长度前提下,所以5没有被复制过来)
        console.log(a);
        a.copyWithin(2,3,5);    //[1,1,3,4,4]把最后两个元素复制到索引2
        console.log(a);
9)数组索引与排序方法

数组实现与字符串的同名方法类似的indexof() 、lastIndexOf()和includes()方法,

此外还有sort()和reverse()方法用于对数组元素重新排序。

indexOf()和lastIndexOf()

这两个方法从数组中搜索指定的值并返回第一个找到的元素的索引。

如果没找到返回 -1.

区别在于:lastIndexOf是从后向前搜索数组。

 //indexOf和lastIndexOf
        let a =[0,1,2,1,0];
        console.log(a.indexOf(1));      //从前向后找第一个:索引为1
        console.log(a.lastIndexOf(1));  //从后向前找第一个:索引为3
	    console.log(a.indexOf(3));      //没找到,返回-1

此外,这两个方法还能接受第二个可选的参数,指定从哪个位置开始搜索。

 //指定第二个参数
		let a =[0,1,2,1,0];
		 console.log(a.lastIndexOf(1));  //从后向前找第一个:索引为3
        console.log(a.indexOf(1,2));    //从索引2开始向后找第一个值位1的元素,返回它的索引:3

【注意】:字符串也有indexOf和lastIndexOf,区别在于字符串方法第二个参数如果是负数会被当成0。

include()

接受一个参数,如果数组包含该值则返回true,否则返回false。

它并不告诉你值的索引,只告诉你是否存在。

sort()

sort()方法对数组实现就地排序并返回排序后的数组。

在不传参调用时,sort默认按照字母顺序对数组元素排序。

 //sort()

        let a =["banana","cherry","apple"];
        a.sort();
        console.log(a); //["apple","banana","cherry"]

如果要实现按照非字母顺序排序,必须要给sort()传递一个比较函数作为参数,这个比较函数决定它的两个参数排序后的前后位置:

​ 如果第一个参数要出现在前面,比较函数应该返回一个< 0 的值,反之要返回一个 >0的值。

如果两个值相等,则返回0。

//带函数的sort
        //返回值<0时第一个参数在第二个参数前面
        let a = [33,4,1111,222];
        console.log(a.sort());      //[1111,222,33,4]
        //升序  a<b (即a-b<0) 
        a.sort( function(a,b){
            return a-b
        })

        console.log(a);             //[4,33,222,1111]

        //降序  a-b>0  即返回值b-a<0
        a.sort( function(a,b){
            return b-a;
        });
        console.log(a);             //[1111,222,33,4]
        

reverse()

就地反转数组元素的顺序,并返回反序后的数组。

        //reverse()
        let a = [1,2,3];
        console.log(a.reverse());       //[3,2,1]

🌊JS数组就介绍到这里啦!
💖💖J如果这篇文章对你有帮助的话希望三连下👍⭐✍支持一下博主🌊
💖💖如果有什么建议的话可以在评论区留言哦!或者私信博主而也可以哦!✍

JavaScript标准内置对象Array的Api(1) 数组Array相关api 阅读详情

相关推荐

NPAPI插件开发详细记录:与JS交互

插件主要用于HTML页面中增强HTML页面可以支持的资源类型,在HTML页面中最重要的一个特性就是可以利用脚本语言来实现与用户的交互,之前的文章也提及过相关的议题,不过在交流过程中还是发现好多开发者对于这个主题有不太明白的地方,这里再次详细介绍一下在插件中如何与JS进行交互。 以前的文章可以与本文互为参考:脚本化接口、插件接口脚本化。 本文的例子代码可以下载:无boost需安装CMake、原来

JumuFENG's blog 1万+

JS数组(超详细)

当数组执行删除单元操作时,被删除单元,之后的单元,会前移,进而顶替被删除单元,出现在被删除单元的位置上,造成数组长度减少的情况,这样的现象称为数组的坍塌。语法:arr.reduce(function (prev, item, index, arr) {}, 初始值)语法:arr.findIndex(function (item, index, arr) {})语法:arr.forEach(function (item, index, arr) {})

qq_73772006的博客 5596

JS中Array数组方法(秒懂数组方法如何使用)

JavaScript中的Array(数组)是一种用于存储多个值的数据结构,它是一种有序的集合,可以包含各种类型的数据,例如数字、字符串、对象等。

百赢出品,必属精品 5048

JavaScript-数组(Array)

JavaScript数组(Array)

StupidlyGrass的博客 6854

STM32 IAP跳转后APP卡死?别慌,手把手教你修复HAL_RCC_OscConfig时钟配置冲突

本文深入分析了STM32 IAP跳转后APP在HAL_RCC_OscConfig函数中卡死的问题,揭示了PLL时钟配置冲突的根本原因。通过详细的代码示例和分步解决方案,指导开发者正确处理STM32F1/F4系列的时钟系统二次初始化问题,确保IAP+APP架构的稳定运行。

weixin_28685287的博客 364

Simulink与C/C++的无缝对接:自定义结构体变量导入实战指南

本文详细介绍了如何将C/C++自定义结构体导入Simulink环境,实现无缝数据对接。通过编写标准C头文件、配置MEX编译环境(如MinGW),并利用`Simulink.importExternalCTypes`函数,可将结构体转换为Simulink Bus对象,从而提升复杂系统模型的可读性、可维护性及仿真与代码生成效率。

weixin_29093017的博客 481

一小时搞定JavaScript(1)——JS基础

在JS中专门有一个未定义类型,就是针对那些声明了变量但是没有进行复制的数据.let tmp;JSON对象本质是个字符串,主要作用就是传递数据,客户端拿到服务器的JSON格式数据字符串,先要转换成JS对象数据.属性必须要双引号(包括属性的属性).属性对应的值可以是nuLl、true/faLse、数字、字符串(必须双引号)、对象、数组.'"name"' +'}'无法通过JSON对象访问属性JS对象是一个真实的对象,有属性和方法.

qq_65034569的博客 1228

UE5多人联机实战:从零搭建LAN游戏房间(含UMG界面配置)

本文详细介绍了如何在UE5中从零开始搭建一个完整的局域网(LAN)多人游戏房间系统。内容涵盖项目基础配置、UMG主菜单设计、会话创建与搜索的核心实现,并重点解析了创建会话的关键参数配置与常见陷阱,帮助开发者快速掌握UE5多人联机开发的核心流程。

weixin_29001683的博客 690

JS数组reduce()方法详解及高级技巧

reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但是总有一条路是最捷径的,亦或许reduce()逼格更高... 1、语法 arr.reduce(callback,[initialValue]) reduce 为数组中的每一个元素依次执行...

vue 5911

Android平台实现Airplay的方法及源代码

Airplay是由苹果公司推出的一项无线音视频传输技术,它允许用户将音频、视频和照片从iOS设备(如iPhone、iPad)或Mac电脑无线传输到支持Airplay的设备(如Apple TV、智能音箱等)。具体的解码和播放方式取决于你选择的库和技术。当Android设备启动AirplayService服务后,它将监听来自iOS设备的连接请求,并在建立连接后接收、解码和播放音视频数据。在AirplayService类的onStartCommand()方法中,我们需要处理Airplay的请求。

CyberLynxX的博客 1598

华为自研 ERP、Oracle EBS 与 SAP 上线时系统配置思路设计差异深度分析

本文对比分析了华为自研ERP、Oracle EBS和SAP S/4HANA三大ERP系统在上线配置思路上的核心差异。从架构设计看,华为采用分布式微服务架构,SAP采用分层服务架构,Oracle采用集中式一体化架构;在模块配置上,华为以业务场景为导向,SAP基于行业模板,Oracle强调模块独立性;数据迁移方面,华为侧重业务规则清洗,SAP注重数据质量监控,Oracle依赖标准化工具;流程适配上,华为系统随流程调整,SAP在框架内优化,Oracle需定制开发;定制开发模式差异明显,华为采用插件化扩展,SAP使

金牌架构师 1448

JavaScript 为什么能活到现在?

作者 | 司徒正美 责编 |郭芮 出品 | 优快云(ID:优快云news) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...

优快云资讯 2万+

基于全局和局部接受性因果特征的广义学习模型,用于在线增量机械故障诊断

本文提出了一种**因果广义学习模型(CBLM)**,用于在线增量机械故障诊断。该模型结合了**全局因果特征**(时域、频域、故障特征频率均值)和**多尺度局部因果特征**(通过扩张卷积提取),构建了一个具有**增量学习能力**的广泛学习系统(BLS)。CBLM支持**结构增量学习**(增加增强节点)和**样本增量学习**(动态更新权重),无需重新训练整个模型,显著提高了计算效率和诊断精度。在两个滚动轴承数据集上的实验表明,CBLM在诊断准确性和训练时间上均优于传统深度学习模型,适用于在线实时故障诊断。

huanghm88的专栏 387

一站式搞定Javascript(三)一篇教会你用数组与对象

数组的长度减少了 1。这个操作并不移动数组中的元素来填补被删除元素留下的空位,而是直接缩短数组,可能导致数组末尾出现未定义的空洞。而我们的i在这里是当作数组下标的遍历,因为数组下标是从0开始的,我们从0累加到3,每一次都打印一遍我们新累加得到的数组下标对应的元素。如果想要同时遍历到数组的下标、数组对于元素的值、以及当前所在数组的话,你可以尝试一下forEach。方法是一种遍历数组元素的便捷方式,它是为数组中的每个元素执行一次提供的函数。数组中的数据可以使任意数据类型,用逗号分割,我们把数组中的数据称为。

m0_67594425的博客 2115

手把手教你学simulink(16.2)--基于Simulink的高通滤波器(High-Pass Filter)项目

基于Simulink的高通滤波器(High-Pass Filter)项目的详细实例介绍。这个项目将重点放在高通滤波器的设计、实现和仿真上,帮助你理解和应用高通滤波器在信号处理中的作用。

MHD0815的博客 926

性能调优秘籍——让OpenClaw运行速度提升10倍(2026优化版)

OpenClaw性能优化核心摘要 本文详细介绍了提升OpenClaw系统性能的关键技术,包括: 使用性能分析器进行代码级性能诊断 内存优化与高效缓存策略 并发处理优化技术 数据库查询性能提升方法 重点内容包括: 全面的性能分析工具实现(计时、内存监控、错误跟踪) 自动生成性能报告和优化建议 操作耗时与内存占用分析算法 关键性能指标(平均耗时、内存增长)计算 通过系统性的性能分析优化,可使OpenClaw运行速度提升10倍以上。

博客 898

JavaScript--后端也有自己的JS要学

本文详细介绍了JavaScript核心概念和操作,主要包括:变量与常量定义、数据类型及判断方法、运算符使用、流程控制语句、字符串/数组常用方法、DOM操作以及事件处理机制。重点内容包括:变量提升现象、数据类型转换、数组排序算法实现、DOM元素获取与属性修改、事件代理机制等。文章通过大量代码示例演示了JavaScript基础语法、数组去重、多种排序算法实现等实用技巧,并详细解析了DOM树结构、节点操作方法以及常见事件类型处理方式,为系统学习JavaScript提供了全面参考。

czx1113的博客 848

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JavaScript数组reduce()方法详解及奇淫技巧

一、前言 reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。 reduce() 可以作为一个高阶函数,用于函数的 compose。 reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但是总有一条路...

saucxs 3143

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

javascript笔试题(6) js 数组

今儿搞定了一点数组之类的题。js的数组可真是灵活呦。来看一看数组的一些函数吧。1.slice 数组的浅复制向数组后添加一个元素,返回原数组不变。返回新数组。 function append(arr, item) { var arr2=[]; arr2=arr.slice(0); arr2.push(item); return ar

章鱼小丸子 1810

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

技巧收藏|10个JavaScript常用数组操作方法

摘要:这篇文章,向大家展示了在日常开发中,数组有哪些小技巧值得借鉴和学习。 在web前端开发第二阶段Javascript中,数组是一个重要且常见的知识点,我们经常将数据存储在数组中,遍历数组或替换数组元素日常开发我们都会用到。学习web前端开发,数组也是会经常用到的。这篇文章,向大家展示了在日常开发中,数组有哪些小技巧值得借鉴和学习,那让我们开始说吧! 1.添加数组元素 1)push() 在我们数组的末尾添加一个或者多个数组元素,push在英文中也是推的意思 var arr = [1, 2, 3]

华为云官方博客 8985

JavaScript逆向补环境入门

补环境是JS逆向中的一个重要手段。何谓补环境?浏览器的中的JS是在浏览器环境中执行的,逆向得出的JS是在本地Node.js环境中执行的,这里就有环境的差异。Node.js中是没有BOM和DOM的,为了让在浏览器中可以执行的代码在Node.js中也能正常执行,有时我们就要补上Node.js缺少的一些BOM和DOM对象等,这就是补环境。综上,补环境基本思路就是使用node-inspect和Web文档,再加上代理监控对比本地js的属性和网站真实js的属性,两边保持一致。完整补环境代码参考JS逆向-补环境-欧冶金。

SamsongSSS的博客 4074

一篇文章带你搞定 JavaScript 中的基本对象

文章目录一、 Function:函数(方法)对象二、Array:数组对象三、 Boolean四、Date:日期对象五、Math:数学对象六、 RegExp 正则表达式对象七、Global 一、 Function:函数(方法)对象 JavaScript function 语句:点击参考 创建: (1) var fun = new Function(形式参数列表,方法体); //不常见,见过即可...

南淮北安的博客 451

多个对象添加到一个空的数组js_技巧收藏|10个JavaScript常用数组操作方法

摘要:这篇文章,向大家展示了在日常开发中,数组有哪些小技巧值得借鉴和学习。在web前端开发第二阶段Javascript中,数组是一个重要且常见的知识点,我们经常将数据存储在数组中,遍历数组或替换数组元素日常开发我们都会用到。学习web前端开发,数组也是会经常用到的。这篇文章,向大家展示了在日常开发中,数组有哪些小技巧值得借鉴和学习,那让我们开始说吧!1.添加数组元素 1)push() 在我们数组...

weixin_39656853的博客 4728

JavaScript进阶(二十一):JS合并两个数组方法详解

项目开发过程中,将两个数组合并成为一个的情况十分常见。有两个数组a、b,需求是将两个数组合并成一个。

IT全栈 华强工作室 4426

Teoria.js:让JavaScript轻松掌握音乐理论的秘密武器

你是否曾经想过,如果编程语言能像理解代码一样理解音乐,那该有多酷?想象一下,用几行JavaScript代码就能构建复杂的和弦进行、分析音阶结构,甚至为你的音乐应用提供智能建议。这正是Teoria.js要带给你的音乐理论编程体验。 Teoria.js是一个轻量级的JavaScript音乐理论库,它让音乐理论的学习和应用变得前所未有的简单。无论你是想开发音乐教育应用、构建数字音频工作站,还是仅仅想通

gitblog_00482的博客 390
上一篇: 【Javascript】正则表达式---RegExp
下一篇: 响应式布局——页面适配各种终端尺寸
programmer11123
博客等级 码龄5年 661粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值