JavaScript常用数组属性和方法

2023-05-16

本文给出了js(JavaScript)数组(Array)操作所涉及到的所有常用内置函数说明及用法,希望对大家有所帮助

数组的属性和方法

  • 属性
    • length属性:
  • 方法
    • 1. 把数组转换成字符串
    • 2. 数组元素结合成为一个字符串
    • 3. 数组合并
    • 4. 裁剪数组
    • 5. 删除元素和添加新元素
    • 6. 数组排序
    • 7.数组迭代方法

属性

length属性:

length属性: 返回数组的长度(数组元素的个数)

<script>
   var lei = ["数字","字母","小数点","质数"]
   //console.log(lei.length);
   lei.length;//lei 的长度是 4
</script>

length 属性始终大于最高数组索引(下标)。

访问第一个元素:

<script>
    var lei = ["数字","字母","小数点","质数"]
    var first = lei[0];//打印的结果是 数字
     console.log(first)
</script>

访问最后一个元素:

<script>
    var lei = ["数字","字母","小数点","质数"]
    var last = lei[lei.length - 1];//打印的结果是 质数
     console.log(last)
</script>

数组末添加数组元素:

<script>
    var lei = ["数字","字母","小数点","质数"]
    var lei[lei.length] = "复数";//向 lei 里面添加新元素(复数)
    document.write(lei)
</script>

这种方法不太常用,目前向数组末添加新元素的最佳方法是使用push()方法

<script>
   var lei = ["数字","字母","小数点","质数"]
   lei.push("复数");//向 lei 里面添加新元素(复数)
   document.write(lei)
</script>

方法

1. 把数组转换成字符串

toString()方法:

toString()方法以逗号分隔的字符串返回数组:

<script>
   //toString()
    var arr = ["apple","banana","orange"]
    var arr2 = arr.toString()
    document.write(arr2)//打印结果为apple,banana,orange
    console.log(typeof(arr2))//打印结果为string
</script>

2. 数组元素结合成为一个字符串

join() 方法
它的行为类似 toString(),但是您还可以规定分隔符:

<script>
    var arr = ["apple","banana","orange"]
    var arr2 = arr.join("-")
    document.write(arr2)  //apple-banana-orange
    console.log(typeof(arr2))//字符串类型
</script>

3. 数组合并

concat()方法

注意:合并数组会产生一个新的数组作为返回值,不会影响原数组

<script>
   //concat()
   //合并两个数组
    var arr = [1,6,8,11,14];
    var arr2 = arr.concat(9,[11,13]);
    console.log(arr2); //[1, 3, 5, 7, 9, 11, 13]
    //合并三个数组
    var arr = [1,6,8,11,14];
    var arr2 = [15,16]
    var arr3 = [17,18]
    var arr4 = arr.concat(arr2,arr3);
    console.log(arr4); //[1,6,8,11,14,15,16,17,18]
</script>

4. 裁剪数组

slice()方法:返回指定数组的一个片段或子数组,里面可以传一个参数或两个参数,参数可以为正也可以为负。

<script>
   //slice()方法:
        var a = [5,6,7,3,1,2];
        var b = a.slice(3) //数字参数指的是数组的索引,一个参数表示开始的位置,不传第二个参数默认为数组中元素个数。
        document.write(b+"<br>") //[3,1,2]
        var c = a.slice(1,4)//返回起始和结束位置之间的项——但不包括结束位置的项
        document.write(c+"<br>")//[6,7,3]
        var d = a.slice(1,-3)//当参数中有负数时候,可以进行转换正数,方法就是-3+6(数组里元素个数)
        document.write(d+"<br>")//[6,7]
        var e = a.slice(-3,-2) //两个负数也是
        document.write(d+"<br>") //[3]
</script>

5. 删除元素和添加新元素

  • 删除方法
    pop()方法 和 shift()方法
    pop()方法:删除数组中最后一个元素,并返回是删除的元素
<script>
    //pop()
    var a=[5,6,7];  
    var arr= a.pop();
    document.write(arr+"<br>");//返回值为 7 
    document.write(a+"<br>");// a=[5,6]; 
</script>

shift()方法:删除数组最前面的元素,返回是删除的元素

<script>
    //shift()
    var a=[5,6,7,2,9];  
    var arr=a.shift();
    document.write(arr+"<br>");// 返回值 5
    document.write(a+"<br>");// a=[,6,7,2,9];
</script>

JavaScript也可以用 delete()方法:删除数组里的元素

<script>
    //delete()方法
    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    var aa=delete fruits[0];
    document.write(fruits+'<br>')//a=[,Orange,Apple,Mango]
    document.write(aa+"<br>");//true   此方法返回的结果是布尔值,当删除成功时,返回true,当删除失败时返回false
</script>

注意: 使用 delete()方法 会在数组留下未定义的空洞,所以建议还是用pop()方法 和 **shift()方法

  • 添加方法
    push()方法 和 unshift方法
    push()方法:向数组最后面添加元素,它返回的是新数组的长度
<script>
    //push()
    var a=[1,2,3];
    var arr=a.push(4,5);
    document.write(arr+"<br>");  //返回数组长度 值为5;
    document.write(a+"<br>"); //a=[1,2,3,4,5]; 
</script>

unshift方法:向数组最前面添加元素,返回的是新数组的长度

<script>
    //unshift()
    var a=[1,2,3];
    var arr=a.unshift(4,5,6);
    document.write(arr+"<br>");  //返回数组长度 值为6;
    document.write(a+"<br>"); //a=[4,5,6,1,2,3];
</script>

还有一个方法,既可以想数组里添加新元素到固定位置,也可以删除固定位置的元素

splice()方法:可用于向数组添加新项,并返回一个包含已删除项的数组,他的第一个参数定义了应添加新元素的位置,第二个参数定义了应删除多少元素,两个参数后面定义了要增加的新元素根据上面的意译,可以看出他还有一个隐藏功能–替换

<script>
  // splice()方法
        //增加元素
        var color = ["red","yellow","black","pink"]
        color.splice(2,0,"green","blue")//在下脚标为2的位置添加
        document.write(color+"<br>")
        //删除元素
        var color2 = ["red","yellow","black","pink","green","blue"]
        var color3 = color2.splice(0,4)//删除下脚标4之前的元素
        document.write(color2+"<br>") 
        //替换元素
        var color4 = ["red","yellow","black","pink","green","blue"]
        var color5 = color4.splice(1,1,"紫色","青色")删除下脚标为一的元素,在下脚标为1的位置添加
        document.write(color4+"<br>") 
</script>

6. 数组排序

  • 从大到小排序
    reverse()方法
    reverse()方法将数组中元素进行倒叙,返回倒叙的数组,它是在原来数组中进行倒叙,不产生的新数组,返回就是原来的数组,只不过里面元素已经进行倒叙重排了。
<script>
    // reverse()
        var a=[1,2,3,4,5,6]
        a.reverse();
        document.write(a)//[6,5,4,3,2,1]
</script>
  • 从小到大排序
    sort()方法
    sort()方法将数组中的元素排序,并返回排序好的数组。如果不传参数默认以字母表顺序进行排序。
<script>
   //sort()
        var a=[4,3,1,2]
        a.sort();
        document.write(a+"<br>")//[1,2,3,4]
        var b = ["a", "d", "c", "b"];
        b.sort()
        document.write(b+"<br>")// ["a", "b", "c", "d"]
</script>

注意:在排序时,sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值, sort()方法比较的也是字符串
例如一下这种情况:

<script>
     var c = [13, 24, 51, 3];
     c.sort()
     document.write(c+"<br>")//[13,24,3,51]
</script>

所以我们要通过一个比值函数来修正此问题
比值函数:接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。

<script>
   var d = [40, 100, 1, 5, 25, 10];
   d.sort(function(a,b){return a-b;});//升序
   document.write(d+"<br>")//[1,5,10,25,40,100]
</script>

我们也可以用相同的技巧,来让他实现降序排序

<script>
   var e = [40, 100, 1, 5, 25, 10];
   e.sort(function(a,b){return b-a;});//降序
   document.write(e+"<br>")//[100,40,25,10,5,1]
</script>

拓展:
既然sort()方法可以进行排序,所以我们也可以用次来寻找最大值和最小值,我们用索引来获取最高和最低值

<script>
    var f = [40, 100, 1, 5, 25, 10];
    f.sort(function(a, b){return a - b});//升序排序  [1,5,10,25,40,100]
    document.write(f[0]+"<br>")//最低值为1
    document.write(f[f.length-1]+"<br>")//最高值为100
</script>

还有一种数组排序方法,不过这种方法不常出现

  • Math.max()方法
    可以使用 Math.max.apply 来查找数组中的最高值:
<script>
   // Math.max()
      var f=[40, 100, 1, 5, 25, 10];
      function myArrayMax(f) {
         return Math.max.apply(null, f);
       }
       var a= myArrayMax(f)
       document.write(a+"<br>")//最高值为100 
</script>

Math.max.apply([值1,值2,值3…]) 等于 Math.max(值1,值2,值3…)

  • Math.min()方法
    您可以使用 Math.min.apply 来查找数组中的最低值:
<script>
   // Math.min()
      var f=[40, 100, 1, 5, 25, 10];
      function myArrayMin(f) {
         return Math.min.apply(null, f);
       }
       var a= myArrayMin(f)
       document.write(a+"<br>")//最低值为1
</script>

7.数组迭代方法

  • indexOf()lastIndexOf()方法

indexOf()lastIndexOf()方法都是接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。
但是indexOf()方法是从数组的开头(位置 0)开始向后查找,而 lastIndexOf()方法是从 数组的末尾开始向前查找,在没找到的情况下返回 -1。在比较第一个参数与数组中的每一项时,会使用全等操作符

<script>
   //indexOf()和 lastIndexOf()
         //存在情况下
         var a = [1,3,6,5,6,7,7,5,3,1];
         document.write(a.indexOf(6)+"<br>")//返回索引值为2
         document.write(a.lastIndexOf(6)+"<br>")//返回索引值为4
         //没有的情况下
         document.write(a.indexOf(2)+"<br>")//-1
         document.write(a.lastIndexOf(2)+"<br>")//-1
          //两个参数的情况下
         document.write(a.indexOf(5,4)+"<br>")//返回索引值为7
         document.write(a.lastIndexOf(1,6)+"<br>")//返回索引值为0
</script>
  • reduce()reduceRight()方法

这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项

这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。

这两个的函数还都可接受4个参数:

  • 总数(初始值/先前返回的值)
  • 项目值
  • 项目索引
  • 数组本身
    这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项
<script>
   // reduce()和reduceRight()方法
         
         //reduce()方法
         var values = [1,2,3,4,5];
         var sum = values.reduce(function(prev, cur, index, array){
           return prev + cur;//把所有值加起来
           },10);//设置初始值为25
         document.write(sum+"<br>"); //25
         //reduceRight()方法
         //给数字添加一个初始值为10
         var values = [1,2,3,4,5];
         var sum = values.reduceRight(function(prev, cur, index, array){
           return prev + cur;//把所有值加起来
           },10);//设置初始值为25
         document.write(sum+"<br>"); //25
</script>
  • every()方法和some()方式

every() 方法检查数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。

some()方式检查数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。如果回调函数仅使用第一个参数(值)时,可以省略其他参数:

这两个函数也是接受3个参数

  • 项目值
  • 项目索引
  • 数组本身
<script>
  //every()方法和some()方式
        //every()三个参数
        var numbers = [45, 4, 9, 16, 25];
        var first = numbers.every(function (value, index, array) {
        return value > 18;
        });
        document.write(first+"<br>");//所有的大于18,里面有不大于18的,所以返回false
        //every()一个参数
        var numbers = [45, 4, 9, 16, 25];
        var first = numbers.every(function(value){
          return value > 18;
        });
        document.write(first+"<br>");//所有的大于18,里面有不大于18的,所以返回false
        //some()方法
        var arr = [1, 2, 3, 4, 5];
        var arr2 = arr.some(function(x) {
          return x < 3;
        }); 
        document.write(arr2+"<br>"); //true
        var arr3 = arr.some(function(x) {
          return x < 1;
        }); 
        document.write(arr3); // false
</script>
  • find()方法和findIndex()方法
    find() 方法返回通过测试函数的第一个数组元素的值。

findIndex() 方法返回通过测试函数的第一个数组元素的索引。

这两个函数都接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
<script>
    //find()方法和findIndex()方法
         //查找(返回)大于 18 的第一个元素的值
          var numbers = [4, 9, 16, 25, 29];
          var first=numbers.find(function(value, index, array) {
            return value > 18;
          })
          document.write(first+"<br>");//25
          //查找(返回)大于 18 的第一个元素的索引
          var numbers = [4, 9, 16, 25, 29];
          var first=numbers.findIndex(function(value, index, array) {
            return value > 18;
          })
          document.write(first+"<br>");//3
</script>
  • forEach()方法

forEach():对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。参数都是function类型,默认有传参,参数分别为:项目值;项目索引,数组本身。

<script>
    //Array.forEach()
        var a=[1,2,5,7,18,46];
        a.forEach(function(value,index,array){//value是项目值,index十索引值,array判断是否存在
          document.write(value+" | "+index+" | "+(array===a)+"<br>")
        });
       //输出为:
       //1 | 0 | true
       //2 | 1 | true
       //5 | 2 | true
       //7 | 3 | true
       //18 | 4 | true
       //46 | 5 | true
</script>
  • map()方法
    map()方法:指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组,此方法不会对没有值得数组元素元素执行函数,并且他不会更改原始数组,默认有传参,三个参数:项目值,项目索引,项目本身(当回调函数仅使用 value 参数时,可以省略索引和数组参数)
<script>
    //map()方法
        //每个数组值都乘以2
        //三个参数
        var arr = [1, 2, 3, 4, 5]
        var arr = arr.map(function(value, index, array) {
          return value * 2;
        });
        document.write(arr+'<br>')//打印[2,4,6,8,10]

        //一个参数
        var arr = [1, 2, 3, 4, 5]
        var arr = arr.map(function(value) {
          return value * 2;
        });
        document.write(arr)//打印[2,4,6,8,10]
</script>
  • filter()方法

filter()方法:“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。,他也有三个参数:项目值,项目索引,数组本身

<script>
   //filter()方法
        //满足能被三整除,或者索引值大于8
        var numbers = [1,45, 4, 9, 16, 25, 7, 8, 10];
        var numbers2 = numbers.filter(function(value, index, array) {
          return value  % 3 === 0 || index >= 3;
        })
        document.write(numbers2)//[45,9,16,25,7,8,10]
</script>

希望此篇文章可以帮助大家更好的了解并运用数组

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript常用数组属性和方法 的相关文章

  • echarts 黑色样式

    lt THIS EXAMPLE WAS DOWNLOADED FROM https echarts apache org examples zh editor html c 61 dataset simple1 gt lt DOCTYPE
  • 磁盘分区

    磁盘 xff1a 可以被分区成多个分区槽 xff08 partition xff09 以Windows来看 xff0c 磁盘可以被分区为 C xff1a xff0c D xff1a xff0c E xff1a 槽 C D E就是分区槽 而L
  • 【STM32】IAP下载程序分析

    IAP下载程序分析 IAP基本原理STM32启动流程程序跳转代码实现总结 IAP基本原理 要实现STM32的IAP xff08 在应用编程 xff09 xff0c 需要分别建立bootloader和app工程 这里的bootloader程序
  • vue el-date-picker 设置可选近30天且时间范围为7天

    对 el date picker 限制 xff1a 默认选择时间范围为最近一天 xff1b 设置快捷选项 xff1a 最近1天 最近3天 最近7天等 xff1b 限制只能选择今天以及今天以前30天 xff1b 选择一个时间之后 xff0c
  • MySQL索引分析

    1 索引是什么 xff1f 索引是一种能提高数据库查询效率的数据结构 它可以比作一本字典的目录 xff0c 可以帮你快速找到对应的记录 索引一般存储在磁盘的文件中 xff0c 它是占用物理空间的 正所谓水能载舟 xff0c 也能覆舟 适当的
  • 任务是如何调度(切换)的?

    学习任务的切换有助于自己理解操作系统的运行过程 并且任务的调度 xff08 切换 xff09 也是操作系统中的重要的部分 任务的切换中关键是任务控制块的控制 xff0c 将现在以及将来要运行的任务向堆栈中的存储与恢复 因为 C OS II总
  • 机器学习算法五:随机森林(Random Forest)

    集成学习 xff1a 通过构建并结合多个学习器来完成学习任务 xff1b 集成学习中主要包括boosting算法 和bagging算法 xff1b boosting算法 xff1a xff08 线性集成 xff09 关注于降低偏差 xff1
  • 怎样利用VNC远程连接LINUX桌面

    关于显示等问题都有 xff0c 比较详细 http blog csdn net zhouyunjie archive 2008 11 27 3396824 aspx 先要修改 vnc xstartup文件 bin sh Uncomment
  • VNC多用户

    1 为vnc建立用户 newuser 2 拷贝 root vnc 里的xstartup文件到用户目录 home newuser 3 修改xstartup文件 xff0c 在最后增加 xff1a gnome session amp 4 以ne
  • 【环境配置】初试使用mitmproxy搭建网络代理

    初试使用mitmproxy搭建网络代理 1 参考文章 老版本的很多功能已经不能用了 xff0c 用新的版本研究了一下 参考文章 https mitmproxy org http www freebuf com sectool 76361 h
  • 关于Keil 的快速注释功能,并为其添加快捷键

    原地址 xff1a http blog sina com cn s blog 6859cadf0101i3p4 html Keil版本uVision 4 03 1 在Keil gt Edit gt Advanced中有两项 Comment
  • 【OpenCV】ArUco Marker

    1 创建 span class token keyword import span cv2 span class token keyword as span cv span class token keyword import span n
  • 非常实用,华为、新华三、锐捷交换机的配置命令分享

    干弱电这一行难免会接触到交换机 xff0c 华为 新华三锐捷交换机又是最常见的交换机 xff0c 关于他们的命令配置很容易弄混 xff0c 而且在实际项目配置中也很容易出错 xff0c 因此 xff0c 本期我们将来介绍这三家交换机的基础配
  • 打飞机小游戏

    设计目标 xff1a 高质量的代码要有这些优点 复用性好 扩展性好 维护性好 可移植性好 健壮性好 效率好 可读性好 所以设计代码的时候不要只想到功能的实现 xff0c 还要考虑功能的扩展及代码复用等 设计规则 xff1a 需求分析抽取共性
  • windows 安装 Navicat Premiun

    Navicat Premiun 中文网站 Navicat Premiun 官网下载 简介 Navicat Premium 是一套数据库管理工具 xff0c 结合其它Navicat 成员 xff0c 支持单一程序同时连接到 MySQL Mar
  • 论文排版中MathType的使用(论文投稿必备)

    使用mathtype往论文中插入公式时 xff0c 若需要编号 xff0c 则点击 右编号 xff08 若只需插入文本行内 xff0c 则点 内联 xff09 由于论文是分栏格式 xff0c 单行公式太长导致编号串行 xff0c 因此需要将
  • python语言中变量的共享引用及原处修改

    代码段一 xff1a 代码段1 gt gt gt a 61 6 gt gt gt b 61 a gt gt gt a b 输出 xff1a 6 6 上述代码段一中 xff0c 第一行我们创建了对象6 xff0c 并将变量a 与之相关联 xf
  • 通用环形缓冲区 LwRB 使用指南

    什么是 LwRB xff1f LwRB 是一个开源 通用环形缓冲区库 xff0c 为嵌入式系统进行了优化 源码点击这里 Github LwRB 特性 使用 ANSI C99 编写FIFO xff08 先进先出 xff09 无动态内存分配 x
  • Windows 环境下的 Socket 编程 3 - 基于 TCP 的服务器/客户端

    基于 TCP 的服务器端 客户端 绝大多数 TCP 服务器端都按照如下顺序调用 xff1a 在 Windows 环境下 xff0c 代码表示为 xff1a WSADATA wsaData span class token punctuati
  • 随想006:帮忙的时机

    我一直不理解发生在我身边的一个现象 从我第一次发现到现在已经几年了 xff0c 在一个又一个人身上 xff0c 不断地出现 在编程界 xff0c 重复 可能是软件中一切邪恶的根源 xff0c 我为此吃过苦头 让我记忆尤深的是 xff0c 当

随机推荐

  • 仿真软件 LTspice XVII 操作方法

    原理图编辑 与其它软件不同 xff0c LTspice XVII 软件先选择动作 xff0c 然后选择对象 比如要移动一个元件时 xff0c 首先选择 移动 xff08 move xff09 命令 xff0c 然后单击一个元件或框住一系列元
  • LwIP IP 层常用函数和宏

    1 将 4 字节数据组成 IP 地址 头文件 xff1a ip addr h span class token function IP ADDR4 span span class token punctuation span ipaddr
  • 测试驱动的嵌入式开发 001:VSCode + CMake + CppUTest 环境搭建

    本文是对 测试驱动的嵌入式 C 语言开发 第二章的实践 对资源受限的嵌入式项目如何进行测试驱动开发的所有疑问 xff0c 都因为本书第二章最开始的一句话而消解 xff0c 当我读到这句话时 xff0c 脑袋里有闪电掠过 这句话是 xff1a
  • 测试驱动的嵌入式开发 002:VSCode + CMake + Unity 环境搭建

    本文是对 测试驱动的嵌入式 C 语言开发 第二章的实践 搭建 VSCode 这部分参考博文 基于Windows 的 VS Code C C 43 43 编译环境搭建 安装 CMake 安装 CMake xff0c 在官网下载最新安装包 安装
  • 原理图与 PCB 绘制备忘

    原理图绘制 导出 BOM 点击菜单 Reports Bill of Materials xff0c 在弹出的生成 BOM 界面中 xff0c 点击 OK 按钮导出 BOM 批量修改器件标识 xff08 比如型号 xff0c 阻值 xff09
  • Windows 10 安装 MySQL

    确认是否已安装 MySQL xff08 1 xff09 按 win 43 r 快捷键打开运行 xff1b xff08 2 xff09 输入 services msc xff1b xff08 3 xff09 点击 确定 xff0c 在打开的服
  • lwIP 细节之四:ARP 相关知识

    ARP 表项的最大存活时间与宏 ARP MAXAGE 相关 xff0c 默认为 240 x 5000ms 61 20 分钟 当 ARP 表项还有最后一分钟 xff08 由宏 ARP AGE REREQUEST USED 控制 xff09 存
  • Windows 环境下的 Socket 编程 4 - 基于 UDP 的服务器/客户端

    在 TCP 中 xff0c 套接字之间应该是一对一的关系 若向 10 个客户端提供服务 xff0c 则除了守门的服务器套接字外 xff0c 还需要 10 个服务器端套接字 但在 UDP 中 xff0c 不管是服务器端还是客户端都只需要 1
  • ADS1120 备忘

    ADS1120 是一个小型 低功耗 16 bit 模数转换器 xff08 ADC xff09 xff1a 内置 PGA xff08 1 128 xff09 内置参考基准 xff08 2 048V xff09 内置温度传感器内置 2 个已配对
  • Windows 环境下的 Socket 编程 5 - 套接字的可选项

    套接字具有多种特性 xff0c 这些特性可以更改 更改和读取可选项函数 span class token keyword int span span class token function getsockopt span span cla
  • 使能中断与禁止中断策略比较

    本文描述的内容仅适用于 Cortex M3 M4 架构 Keil MDK 编译环境 在阅读 RT Thread 源码和 FreeRTOS 源码时 xff0c 发现二者使能中断和禁止中断的方式不同 xff0c 再加上 CMSIS 也提供了使能
  • FreeModbus RTU 移植指南

    FreeModbus 简介 FreeModbus 是一个免费的软件协议栈 xff0c 实现了 Modbus 从机功能 xff1a 纯 C 语言支持 Modbus RTU ASCII支持 Modbus TCP 本文介绍 Modbus RTU
  • 随想007:模块化代码

    你一定不止一次的听说过模块化代码 理想的模块化代码高内聚低耦合 逻辑清晰 经过严格测试 xff0c 易于复用 嵌入式 C 编程界到处流传着它的大名 在学校 在公司 在各种技术书籍中 xff0c 你总能找到它的身影 它被描述的像是无所不能 x
  • VS Code 用作嵌入式开发编辑器

    使用 Keil MDK 进行嵌入式开发时 xff0c Keil 的编辑器相对于主流编辑器而言有些不方便 xff0c 比如缺少暗色主题 缺少智能悬停感知 xff08 鼠标停在一个宏上 xff0c 能自动展开最终的宏结果 xff09 代码补全不
  • CSDN Marddown 编辑器语法备忘

    原文链接 xff1a https blog csdn net blogdevteam article details 103478461 本文对其二次加工 xff0c 增加渲染样式 补充例程 添加未收录的常用语法 CSDN Markdown
  • 随想008:烂摊子

    我看到过很多离谱的现象 比如 xff1a 程序 代码重复 命名随意 逻辑混乱 甚至对齐都不一致 xff0c 当我询问代码为什么这样写时 xff0c 他们告诉我 xff1a 我接手时就是这样 xff01 原理图参数错误 器件老旧 xff0c
  • MySQL —— Database initialization failed 错误处理

    安装 MySQL 过程中遇到的错误 xff0c 记录一下 xff0c 避免下次又遇到同样的错误 安装 MySQL 8 0 33 到最后一步时 xff0c 出现了小红点无法往下执行了 找了网上的方法解决了问题 xff0c 为了避免下次遇到同样
  • 随想009:读书

    我很懊恼的意识到 xff0c 直到过了 30 岁 xff0c 我才明白如何读书 我们在网上浏览新闻 阅读小说 xff0c 这些让人愉悦的阅读不叫读书 xff0c 顶多叫消遣 xff1b 我们在学校背诵历史 地理 xff0c 记住数学公式和化
  • 找文心一言问了几个嵌入式软件开发的问题

    百度终于通知我可以试用文心一言了 xff0c 试验了一番 xff0c 总体满意 xff0c 记录几个文心一言回答的问题 我是一个嵌入式软件开发者 xff0c 你能帮我做什么工作以提高我的开发效率 作为一个嵌入式软件开发者 xff0c 以下是
  • JavaScript常用数组属性和方法

    本文给出了js xff08 JavaScript xff09 数组 xff08 Array xff09 操作所涉及到的所有常用内置函数说明及用法 xff0c 希望对大家有所帮助 数组的属性和方法 属性length属性 xff1a 方法1 把