当前位置: 首页 > article >正文

WPS JS宏编程教程(从基础到进阶)-- 第五部分:JS数组与WPS结合应用

目录

  • 摘要
  • 第5章 JS数组与WPS结合应用
    • 5-1 JS数组的核心特性
      • 核心特性解析
    • 5-2 数组的两种创建方式(字面量与扩展操作符)
      • 1. 字面量创建
      • 2. 扩展操作符创建
    • 5-3 数组创建应用:提取字符串中的数字
      • 需求说明
      • 代码实现
    • 5-4 用函数创建数组(new Array、Array.of、Array.from)
      • 1. new Array
      • 2. Array.of
      • 3. Array.from
    • 5-5 函数创建数组应用:按条件格式化数据
      • 需求说明
      • 代码实现
    • 5-6 数组元素的读写改操作
      • 核心操作解析
      • 代码示例
      • 输入输出说明
    • 5-7 单元格区域与JS数组的交互
      • 需求说明
      • 代码实现
      • 表格结构示例
    • 5-8 单元格与数组应用:提取首个满足条件的数据
      • 需求说明
      • 代码实现
      • 输入输出示例
    • 5-9 数组长度控制与切片功能
      • 核心功能
      • 代码示例
      • 应用场景
    • 5-10 数组元素的添加与删除
      • 栈与队列操作
      • 方法对比
    • 5-11 添加删除应用1:提取求和最大记录
      • 需求说明
      • 代码实现
      • 输入表格示例
      • 输出结果
    • 5-12 添加删除应用2:二维区域转嵌套数组
      • 需求说明
      • 代码实现
      • 输入表格示例
      • 输出嵌套数组
    • 5-13 数组元素的循环迭代方法
      • 三种循环方式对比
      • 应用场景
    • 5-14 forEach应用:筛选数据并汇总
      • 需求说明
      • 代码实现
      • 输入表格片段
      • 输出结果
    • 5-15 数组转换迭代map函数
      • 核心功能
      • 代码示例
      • 输入输出说明
    • 5-16 map应用1:一维嵌套数组重组
      • 需求说明
      • 代码实现
      • 关键逻辑
    • 5-17 map应用2:一维数组拆分分组
      • 需求说明
      • 代码实现
      • 拆分逻辑
    • 5-18 数组筛选迭代filter函数
      • 核心功能
      • 代码示例
      • 应用场景
    • 5-19 数组查找迭代(find、indexOf等)
      • 方法对比
      • 代码示例
      • 输入表格应用
    • 5-20 逻辑判断迭代(every与some)
      • 功能对比
      • 代码示例
      • 应用实例
      • 输入表格片段
      • 输出结果
    • 5-21 数组的归并迭代 — reduce(必学重要函数)
      • 示例代码及详细注释
      • 函数详细解析
    • 5-22 数组的归并迭代应用 — 实例:提取最大最小值的记录
      • 示例代码及详细注释
      • 函数详细解析
    • 5-23 数组的打平迭代 — flat 与 flatMap(合并打平嵌套数组)
      • 示例代码及详细注释
      • 函数详细解析
    • 5-24 数组的合并 — concat(合并打平嵌套数组)
      • 示例代码及详细注释
      • 函数详细解析
    • 5-25 数组元素添加删除 — push、pop、unshift、shift
      • 示例代码及详细注释
      • 函数详细解析
    • 5-26 数组元素添加删除应用(先进先出用法1)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-27 数组元素添加删除应用(先进先出用法2)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-28 数组切片 — slice(子数组的切片提取)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-29 数组切片应用(实例:多列数据求和筛选)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-30 数组切片应用-方法1(自定义函数:二维区域转数组)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-31 数组切片应用-方法2(自定义函数:二维区域转数组)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-32 数组切片 — splice(子数组的插入、删除、替换)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-33 数组排序 — sort(按求和结果为排序依据)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-34 合并与拆分 — split 与 join(字符串与数组互转)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-35 合并与拆分 — split 与 join 应用(字符串中的数字排序)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-36 综合实例应用-1(多工作表数据合并)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-37 综合实例应用-2(整理不规范数据)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-38 综合实例应用-3(按员工职务大小排序)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-39 综合实例应用-4(多条件筛选记录并排序)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-40 综合实例应用-5(求字符串中的最大值记录)
      • 目标说明
      • 示例代码
      • 代码解析

摘要

本章深入探讨了 JavaScript 数组在 WPS 表格自动化中的高级应用,旨在帮助读者掌握数组操作的核心技巧,轻松处理复杂数据并提升工作效率。通过详细的代码示例和逐行解析,本章内容涵盖了数组的归并、打平、合并、切片、排序以及综合应用等多个方面。

首先,介绍了 reduce 方法的强大功能,它能够将数组中的所有元素归并为一个单一值,适用于求和、求平均值、求最大值和最小值等场景。通过实例代码,展示了如何利用 reduce 对数组进行高效计算,例如统计销售额总和、计算平均分以及筛选极值记录。

接着,探讨了如何使用 flatflatMap 方法将嵌套数组打平为一维数组,这对于处理多层嵌套数据(如二维表格)非常实用。通过示例代码,展示了如何将复杂的嵌套结构简化为一维数组,以便后续操作。

此外,还详细讲解了 concat 方法的使用,用于将多个数组或值合并为一个新数组。这一方法在合并多列数据或扩展数组时尤为高效。通过实例,展示了如何利用 concat 实现数组的灵活合并。

在数组元素的添加与删除部分,介绍了 pushpopunshiftshift 方法的使用,分别实现了栈(后进先出)和队列(先进先出)的操作。通过代码示例,展示了如何利用这些方法动态管理数组数据。

本章还重点介绍了 slice 方法的灵活应用,用于从数组中提取子数组。通过实例,展示了如何利用正索引、负索引或混合索引提取特定范围的数据,适用于数据分析和展示场景。

最后,通过多个综合实例,展示了如何将这些方法结合使用,解决实际工作中的复杂问题。例如,如何从多列数据中筛选满足条件的记录并排序,如何将不规范数据整理为结构化数据,以及如何从字符串中提取最大值记录等。这些实例不仅展示了数组方法的强大功能,还提供了实际操作的完整流程。

通过学习本章内容,读者将能够熟练掌握 JavaScript 数组在 WPS 表格中的高级应用,轻松应对各种数据处理需求,显著提升工作效率。无论是初学者还是有一定基础的开发者,都能从这些实用技巧中获益匪浅。


第5章 JS数组与WPS结合应用


5-1 JS数组的核心特性

数组是JavaScript中用于存储有序数据的核心结构,其特性决定了它在WPS表格自动化中的高效性。

核心特性解析

  1. 动态性:数组长度可自由扩展或收缩,无需预定义大小。
  2. 元素多样性:支持任意类型数据(数字、字符串、对象、甚至嵌套数组)。
  3. 索引机制:元素位置从0开始编号,支持快速随机访问。
  4. 稀疏性:允许存在空元素(如[1,,3]),节省内存空间。
  5. 一维本质:JS只有一维数组,但可通过嵌套模拟多维结构。

5-2 数组的两种创建方式(字面量与扩展操作符)

1. 字面量创建

function test1() {var arr1 = [];               // 空数组var arr2 = ["张三", 24, 100]; // 混合类型元素var arr3 = [78, , 12];       // 稀疏数组(中间空元素)
}

注释

  • arr1:空数组,常用于初始化。
  • arr2:包含字符串、数字、甚至表达式的动态数组。
  • arr3:稀疏数组,第二个元素未定义(显示为empty)。

2. 扩展操作符创建

function test2() {var arr1 = [1, 2, 3];var arr2 = [...arr1];        // 复制数组:[1,2,3]var arr3 = [..."12345"];     // 字符串转数组:["1","2","3","4","5"]var arr4 = [...arr3, 6, 7];  // 合并数组:["1","2","3","4","5",6,7]
}

解析

  • ...操作符可将可迭代对象展开,常用于复制或合并数组。
  • 输入类型:数组、字符串、Set等可迭代对象。
  • 输出类型:新数组。

5-3 数组创建应用:提取字符串中的数字

需求说明

从混合字符串中提取数字(如“曾贤志89”提取为[8,9])。

代码实现

function test() {var newarr = [];                          // 初始化结果数组var Rngs = Range("A2", Cells(999, 1).End(xlUp)); // 获取A列数据区域for (var Rng of Rngs) {                   // 遍历每个单元格var arr = [...Rng.Value()];           // 将单元格值转为字符数组for (var ar of arr) {                 // 遍历每个字符if (Number(ar) > -1) {            // 判断是否为数字newarr = [...newarr, ar];     // 将数字加入结果数组}}Rng.Offset(0, 1).Value = newarr.join(","); // 写入相邻单元格newarr = [];                          // 清空临时数组}
}

逐行解析

  1. Range("A2", Cells(999, 1).End(xlUp)):动态获取A列数据区域,避免处理空单元格。
  2. [...Rng.Value()]:将单元格内容(如“A89”)拆分为字符数组["A","8","9"]
  3. Number(ar) > -1:过滤非数字字符(如字母返回NaN,条件不成立)。
  4. join(","):将数组转换为以逗号分隔的字符串,便于写入单元格。

5-4 用函数创建数组(new Array、Array.of、Array.from)

1. new Array

function test1() {var arr1 = new Array();      // 空数组:[]var arr2 = new Array(5);     // 长度5的空数组:[empty ×5]var arr3 = new Array(10,4,8);// 含元素的数组:[10,4,8]
}

注意new Array(5)会创建稀疏数组,直接访问元素返回undefined

2. Array.of

function test2() {var arr1 = Array.of();       // 空数组:[]var arr2 = Array.of(5);      // 单元素数组:[5]var arr3 = Array.of(10,4,8); // 多元素数组:[10,4,8]
}

与new Array区别Array.of(5)创建的是[5]而非长度为5的空数组。

3. Array.from

function test3() {var arr = [1, 3, 5];var arr1 = Array.from(arr);              // 复制数组:[1,3,5]var arr2 = Array.from("9527");           // 字符串转数组:["9","5","2","7"]var arr3 = Array.from([3,4,9], x => x*10); // 映射转换:[30,40,90]
}

参数解析

  • 第一个参数:可迭代对象(如数组、字符串)。
  • 第二个参数(可选):映射函数,对每个元素进行处理。

5-5 函数创建数组应用:按条件格式化数据

需求说明

筛选成绩≥90分的数据,并计算其占总分的比例。

代码实现

function test() {var Rngs = Range("A2", Range("A9999").End(xlUp)); // 获取数据区域for (var Rng of Rngs) {                          // 遍历每行var arr = Rng.Offset(0,1).Resize(1,12).Value()[0]; // 读取12个月数据var newarr = [];var wsf = WorksheetFunction;for (var ar of arr) {                        // 筛选≥90的数据if (ar >= 90) newarr.push(ar);}var total = wsf.Sum(newarr);                 // 计算总分var arr1 = Array.from(newarr, x => `${x}${wsf.Text(x/total, "0%")}`);Rng.Offset(0,13).Value2 = arr1.join(", ");   // 写入结果}
}

关键点解析

  • Resize(1,12):从当前行向右扩展12列,读取月度数据。
  • Array.from映射:将分数转换为分数(占比)格式,如"90(25%)"

5-6 数组元素的读写改操作

核心操作解析

数组通过索引直接访问或修改元素,支持动态扩展和类型混合存储。

代码示例

function test1() {var arr = [100];          // 初始化数组:[100]arr[0] = 199;             // 修改第一个元素:[199]arr[1] = "JS";            // 动态扩展数组:[199, "JS"]arr[4] = 1000;            // 跳过索引2-3,直接赋值索引4:[199, "JS", empty ×2, 1000]Console.log(arr[3]);       // 输出:undefined(空元素)
}

输入输出说明

  • 输入类型:任意数据类型。
  • 输出类型:数组元素按索引位置返回。
  • 数据示例
    • 初始数组:[100]
    • 修改后:[199, "JS", empty ×2, 1000]

5-7 单元格区域与JS数组的交互

需求说明

将WPS表格中的单元格数据读取为数组,或将数组写入单元格区域。

代码实现

function 读取() {// 读取单行数据(A2:E2)var arr1 = Range("A2:E2").Value();        // 返回二维数组:[[A2,B2,C2,D2,E2]]// 读取单列数据(A2:A9)var arr2 = Range("A2:A9").Value();        // 返回二维数组:[[A2],[A3],...,[A9]]// 读取多行多列数据(A2:E9)var arr3 = Range("A2:E9").Value();        // 返回二维数组(5行5列)
}function 写入() {// 将一维数组写入A1:C1Range("A1:C1").Value2 = [1, 2, 3];        // A1=1, B1=2, C1=3
}

表格结构示例

ABCDE
2数据1数据2数据3数据4数据5
3数据6数据7数据8数据9数据10
  • 读取结果arr3 = [["数据1","数据2","数据3","数据4","数据5"], ["数据6","数据7","数据8","数据9","数据10"]]

5-8 单元格与数组应用:提取首个满足条件的数据

需求说明

从月度销售数据中提取第一个销售额≥100的月份及数值。

代码实现

function test() {var LastCell = Range("A9999").End(xlUp);  // 获取最后一行var Rngs = Range("A2", LastCell);         // 数据区域(A2到末尾)for (var Rng of Rngs) {                   // 遍历每行var arr = Rng.Offset(0, 1).Resize(1, 12).Value()[0]; // 读取12个月数据var arr1 = Array.from(arr, x => x >= 100);           // 生成布尔数组var num = WorksheetFunction.Match(true, arr1, 0);    // 查找第一个true的位置var val = Rng.Offset(0, num).Value();                // 获取对应值Rng.Offset(0, 13).Value2 = `${val}${num}月)`;     // 写入结果}
}

输入输出示例

  • 输入表格片段(B2:M2):
    1月2月3月7月
    847373100
  • 输出结果100(7月)

5-9 数组长度控制与切片功能

核心功能

通过修改数组的length属性实现动态截断或扩展。

代码示例

function test() {var c = [2, 3, 5, 7, 9];  c.length = 3;            // 截断为前3个元素:[2,3,5]  c.length = 5;            // 扩展为长度5:[2,3,5, empty ×2]  
}

应用场景

动态调整数据规模,例如仅保留有效数据部分。


5-10 数组元素的添加与删除

栈与队列操作

function test1() {var arr = [];arr.push("a");          // 尾部添加元素:["a"]arr.push("b", "c");     // 添加多个元素:["a","b","c"]arr.pop();              // 删除尾部元素:["a","b"]
}function test2() {var arr = ["a","b","c","d","e"];arr.shift();            // 删除头部元素:["b","c","d","e"]delete arr[1];          // 删除索引1元素:["b", empty, "d","e"]
}

方法对比

  • push/pop:栈结构(后进先出)。
  • shift/unshift:队列结构(先进先出)。

5-11 添加删除应用1:提取求和最大记录

需求说明

从季度销售数据中提取总销售额最大的员工记录。

代码实现

function test() {var wsf = WorksheetFunction;var newarr = [];var counter = wsf.CountA(Range("A:A"));            // 统计A列非空单元格数for (var num = 2; num <= counter; num++) {         // 遍历数据行(从第2行开始)var arr = Range(`B${num}:E${num}`).Value()[0]; // 读取B-E列季度数据newarr.push(wsf.Sum(arr));                     // 计算季度总和并存入数组}var mx = wsf.Max(newarr);                          // 找到最大值var pos = wsf.Match(mx, newarr, 0);                // 获取最大值位置var na = Range("A" + (pos + 1)).Value();           // 获取对应员工姓名alert(`最大值:<h1 style='color:red'>${mx}</h1>\n对应员工为:${na}`);
}

输入表格示例

ABCDE
1姓名Q1Q2Q3Q4
2张三121127130106
3李四94148121131
4王二麻150150108109

输出结果

  • 最大值150 + 150 + 108 + 109 = 517
  • 对应员工王二麻

5-12 添加删除应用2:二维区域转嵌套数组

需求说明

将二维表格区域转换为嵌套数组结构(每3行一组)。

代码实现

function test() {var bigarr = [], smallarr = [];var Rngs = Range("A2:C7");                  // 定义数据区域(A2-C7)for (var Rng of Rngs) {                     // 遍历每个单元格smallarr.push(Rng.

相关文章:

WPS JS宏编程教程(从基础到进阶)-- 第五部分:JS数组与WPS结合应用

目录 摘要第5章 JS数组与WPS结合应用5-1 JS数组的核心特性核心特性解析5-2 数组的两种创建方式(字面量与扩展操作符)1. 字面量创建2. 扩展操作符创建5-3 数组创建应用:提取字符串中的数字需求说明代码实现5-4 用函数创建数组(new Array、Array.of、Array.from)1. new Arra…...

Kaggle-Housing Prices-(回归预测+Ridge,Lasso,Xgboost模型融合)

Housing Prices 题意&#xff1a; 给出房子的各种特性&#xff0c;让你预测如今房子的价格。 思考&#xff1a; 数据处理&#xff1a; 1.用plt查看散点图&#xff0c;选择对价格影响高的特征值&#xff1a;YearBuilt&#xff0c;YearRemodAdd&#xff0c;GarageYrBlt。但是…...

C语言:32位数据转换为floaf解析

在C语言中&#xff0c;将接收到的32位数据&#xff08;通常是一个unsigned int或int类型&#xff09;转换为float类型可以通过以下方式实现&#xff1a; 除了下面的方法外还有几个方法&#xff0c;参考博客&#xff1a; C语言&#xff1a;把两个16位的数据合成32位浮点型数据 …...

MQTT协议:IoT通信的轻量级选手

文章总结&#xff08;帮你们节约时间&#xff09; MQTT协议是一种轻量级的发布/订阅通信协议。MQTT通信包括连接建立、订阅、发布和断开等过程。MQTT基于TCP/IP&#xff0c;其通信过程涉及多种控制包和数据包。ESP32S3可以通过MQTT协议接收消息来控制IO9引脚上的LED。 想象一…...

GNSS有源天线和无源天线

区别 需要外部供电的就是有源天线&#xff0c;不需要外部供电的是无源天线。 无源天线 一般就是一个陶瓷片、金属片等&#xff0c;结构简单&#xff0c;成本低廉&#xff0c;占用空间及体积小&#xff0c;适合于强调紧凑型空间的导航类产品。 不需要供电&#xff0c;跟设备直…...

欧税通香港分公司办公室正式乔迁至海港城!

3月20日&#xff0c;欧税通香港分公司办公室正式乔迁至香港油尖旺区的核心商业区海港城!左手挽着内地市场&#xff0c;右手牵起国际航道——这波乔迁选址操作堪称“地理课代表”! 乔迁仪式秒变行业大联欢!感谢亚马逊合规团队、亚马逊云、阿里国际站、Wayfair、coupang、美客多…...

Qt 自带的QSqlDatabase 模块中使用的 SQLite 和 SQLite 官方提供的 C 语言版本(sqlite.org)对比

Qt 自带的 QSqlDatabase 模块中使用的 SQLite 和 SQLite 官方提供的 C 语言版本&#xff08;sqlite.org&#xff09;在核心功能上是相同的&#xff0c;但它们在集成方式、API 封装、功能支持以及版本更新上存在一些区别。以下是主要区别&#xff1a; 1. 核心 SQLite 引擎 Qt 的…...

zustand 源码解析

文章目录 实现原理createcreateStore 创建实例CreateStoreImpl 实现发布订阅createImpl 包装返回给用户调用的 hookuseSyncExternalStoreWithSelector 订阅更新zustand 性能优化自定义数据更新createWithEqualityFncreateWithEqualityFnImpl 返回 hookuseSyncExternalStoreWith…...

洛谷题单3-P1423 小玉在游泳-python-流程图重构

题目描述 小玉开心的在游泳&#xff0c;可是她很快难过的发现&#xff0c;自己的力气不够&#xff0c;游泳好累哦。已知小玉第一步能游 2 2 2 米&#xff0c;可是随着越来越累&#xff0c;力气越来越小&#xff0c;她接下来的每一步都只能游出上一步距离的 98 % 98\% 98%。现…...

ETPNav:基于演进拓扑规划的连续环境视觉语言导航模型

1、现有工作的缺陷&#xff1a; 最近&#xff0c;出现了一种基于模块化航路点的方法的新兴趋势&#xff0c;该方法将复杂任务分为航路点生成、子目标规划和导航控制&#xff1a; &#xff08;1&#xff09;在每个决策循环中&#xff0c;代理使用预训练的网络来预测附近的几个…...

Spring Cloud LoadBalancer负载均衡+算法切换

目录 介绍核心功能负载均衡启动两个支付服务订单模块引入依赖LoadBalanced 注解启动订单服务测试结果 负载均衡算法切换总结 介绍 Spring Cloud LoadBalancer 是 Spring Cloud 提供的客户端负载均衡解决方案&#xff0c;提供更现代化的 API 和更好的 Spring 生态系统集成。它支…...

游戏引擎学习第210天

回顾并为今天的工作做准备 今天我们&#xff0c;进行一些编码工作。这部分的编码内容对那些对代码架构感兴趣的人非常有帮助&#xff0c;我认为今天的编码内容会很有教育意义&#xff0c;尤其是在展示一些代码转化的过程中&#xff0c;希望大家能够从中获得一些启发。 接下来…...

XXL-JOB 分片广播模式深度解析:从原理到实战

前言 XXL-JOB 是一个轻量级的分布式任务调度平台&#xff0c;它以其简单易用、灵活扩展的特点受到了开发者的青睐。本文将深入探讨 XXL-JOB 的分片广播模式&#xff0c;包括其工作原理、实现方法、异常处理及监控告警策略&#xff0c;并通过 Java 代码示例和工作流程图来帮助大…...

UML类图综合实验三补档

1.使用简单工厂模式模拟女娲(Nvwa)造人(Person)&#xff0c;如果传入参数“M”&#xff0c;则返回一个Man对象&#xff0c;如果传入参数“W”&#xff0c;则返回一个Woman对象&#xff0c;用Java语言实现该场景。现需要增加一个新的Robot类&#xff0c;如果传入参数“R”&#…...

WinForm真入门(11)——ComboBox控件详解

WinForm中 ComboBox 控件详解‌ ComboBox 是 WinForms 中一个集文本框与下拉列表于一体的控件&#xff0c;支持用户从预定义选项中选择或直接输入内容。以下从核心属性、事件、使用场景到高级技巧的全面解析&#xff1a; 一、ComboBox 核心属性‌ 属性说明示例‌Items‌下拉…...

DeepSeek底层揭秘——《推理时Scaling方法》技术对比浅析

4月初&#xff0c;DeepSeek 提交到 arXiv 上的最新论文正在 AI 社区逐渐升温。 笔者尝试对比了“关于推理时Scaling”与现有技术&#xff0c;粗浅分析如下&#xff1a; 与LoRA的对比 区别&#xff1a; 应用场景&#xff1a;LoRA是一种参数高效微调方法&#xff0c;主要用于在…...

Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(四)

Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;四&#xff09; 对 Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;三&#xff09;-CSDN博客 进行完善&#xff0c;注意完善 …...

Adam优化器研究综述

摘要 Adam优化器&#xff08;Adaptive Moment Estimation&#xff09;是一种广泛应用于深度学习的优化算法&#xff0c;通过自适应学习率加速梯度下降过程。本文从Adam的定义、算法原理、优势与局限性、应用场景及变体等方面进行调研&#xff0c;结合学术文献和实践经验&#x…...

在 macOS 上连接 PostgreSQL 数据库(pgAdmin、DBeaver)

在 macOS 上连接 PostgreSQL 数据库 pgAdmin 官方提供的图形化管理工具&#xff0c;支持 macOS。 下载地址&#xff1a;https://www.pgadmin.org/ pgAdmin 4 是对 pgAdmin 的完全重写&#xff0c;使用 Python、ReactJs 和 Javascript 构建。一个用 Electron 编写的桌面运行时…...

使用文本翻译API打破语言障碍

一、引言 在当今全球化的商业环境中&#xff0c;企业面临着前所未有的语言挑战。无论是出口商品、引进技术&#xff0c;还是与国际客户进行交流&#xff0c;语言障碍始终是一个亟待解决的问题。文本翻译API作为一款高效、稳定的工具&#xff0c;支持多种语言的翻译&#xff0c…...

UniappX动态引入在线字体图标,不兼容css时可用。

优缺点 优点&#xff1a;不需要占用本地存储&#xff0c;可直接在线同步库图标&#xff0c;不用再手动引入ttf文件&#xff0c;不用手动添加键值对对应表。 缺点&#xff1a;受网速影响&#xff0c;字体库cdn路径可能会更改&#xff0c;ios端首次加载&#xff0c;可能会无图标…...

2018年真题

数学基础 一、 &#xff08;共4分&#xff09;用逻辑符号表达下列语句&#xff08;论域为包含一切事物的集合&#xff09; 1、&#xff08;2分&#xff09;集合A的任一元素的元素都是A的元素 经过对图片文字的识别与逻辑分析&#xff0c;结果如下&#xff1a; 符号定义&…...

Efficient Burst Raw Denoising:稳定噪声方差和分频率降噪

Efficient Burst Raw Denoising with Stabilization and Multi-Frequency Denoising Network Burst Raw Denoising必要性Burst Raw Image Denoising流程Main Contributions具体方法介绍集成noise priorCMOS sensor 噪声建模噪声变换&#xff08;Variance stabilization&#xf…...

Ansible的使用2

#### 一、Ansible变量 ##### facts变量 > facts组件是Ansible用于采集被控节点机器的设备信息&#xff0c;比如IP地址、操作系统、以太网设备、mac 地址、时间/日期相关数据&#xff0c;硬件信息等 - setup模块 - 用于获取所有facts信息 shell ## 常用参数 filter…...

Springboot JPA ShardingSphere 根据年分表java详细代码Demo

一、项目结构 src/main/java ├── com.example │ ├── config │ │ └── TableInitializer.java # 动态建表配置 │ ├── entity │ │ └── Order.java # JPA实体类 │ ├── repository │ │ └── OrderRepository.j…...

mapbox进阶,使用本地dem数据,加载hillshade山体阴影图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️hillshade 山体阴影图层 api1.3.1 ☘️…...

【C++】Stack Queue 仿函数

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲STL中的stack和queue。因为前面我们已经有了string、vector和list的学习基础&#xff0c;所以这篇文章主要关注一些stack和queue的细节问题&#xff0c;以及了解一下deque&#xff08;缝合怪&#xff09;和priority_queue &am…...

代码随想录_单调栈

代码随想录_单调栈 739.每日温度 739. 每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;…...

C++类与对象进阶知识深度解析

目录 一、再谈构造函数 &#xff08;一&#xff09;构造函数体赋值 &#xff08;二&#xff09;初始化列表 &#xff08;三&#xff09;成员变量初始化顺序 &#xff08;四&#xff09;explicit关键字 二、static成员 &#xff08;一&#xff09;概念 &#xff08;二&am…...

BoostSearch搜索引擎项目 —— 测试用例设计 + web自动化测试代码

web自动化代码&#xff1a; https://gitee.com/chicken-c/boost-search/tree/master/AutoTest...