JavaScript用一行代码对数组元素进行移位——Array.splice()的巧用

JS里面可以用splice()函数对数组的元素进行互换位置,用法如下:

data = ["Red", "Blue", "Green", "Yellow", "Black", "White", "Orange"]
// (7) ["Red", "Blue", "Green", "Yellow", "Black", "White", "Orange"]

data.splice(2,0,data.splice(3,1)[0])     //意思是把第4位(index=3)的数据移到第3位(index=2)
// data = (7) ["Red", "Blue", "Yellow", "Green", "Black", "White", "Orange"]

// 可以看到数据位置移位了,
// 原始 data = ["Red", "Blue", "Green", "Yellow", "Black", "White", "Orange"]
//                                    \ /
//                                     X
//                                    / \
// 现在 data = ["Red", "Blue", "Yellow", "Green", "Black", "White", "Orange"]
// 并不是Yellow和Green互换位置,只是把Yellow移到Green前面了

// 再看这个例子,

data.splice(2,0,data.splice(5,1)[0])    //意思是把第6位(index=5)的数据移到第3位(index=2)
// data = (7) ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]

// 
// 原始 data = ["Red", "Blue", "Yellow", "Green", "Black", "White", "Orange"]
//                                    \                      ↓
//                                 ----\-------←-----←--------
//                                ↓     \
// 现在 data = ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]

补充一下Array.splice()函数:

顾名思义就是数组拼接函数,用法是这样的:

Array.splice(start, deleteCount, ...items)

start是指拼接起始位置,deleteCount是删除元素的数量,...items就是要加入的元素了,举些例子:

// 还是上面的那个数组
data = ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]
// (7) ["Red", "Blue", "White", "Yellow", "Green", "Black", "Orange"]

// 在第2个元素Red后面插1个元素
data.splice(1,0,"Pupple")
// data = (8) ["Red", "Pupple", "Blue", "White", "Yellow", "Green", "Black", "Orange"]
//                       ↑
//                   插入Pupple

// 替换第3个元素Blue
data.splice(2,1,"Cyan")
// → ["Blue"] // 如果第二个参数不为0,则会返回被删除的元素们
// data = (8) ["Red", "Pupple", "Cyan", "Green", "Yellow", "Black", "White", "Orange"]
//                                 ↑
//                           替换Blue为Cyan

splice和concat函数区别还是挺大的,concat有concatenate的意思,意思是把两个数组首尾相接连起来,而splice是更加广义的拼接,不单单是首尾相接,还可以插入到一个数组里面。

 

感谢大佬们批评指正。

### 如何使用 Keil5 烧录 Hex 文件 对于仅拥有已编译好的 hex 文件而无源文件的情况,在 Keil V5 平台上直接烧录 hex 文件至单片机(如华大单片机)需采取特定的方法,因为直接调用该平台进行此类操作不可行[^1]。 #### 设置 Output 路径 进入 Keil 的 output 设置界面,指定要烧录的 hex 文件的具体位置。确保在路径输入框中填写完整的 hex 文件名称并附带 `.hex` 扩展名;缺少此扩展名可能导致系统继续尝试烧录先前编译的结果而非所选的 hex 文件[^3]。 #### 配置 Flash 工具选项 针对不同类型的微控制器(MCU),可能还需调整 flash 下载工具的相关配置参数以匹配目标设备的要求。这一步骤通常涉及选择合适的编程算法以及设定通信接口等细节[^2]。 #### 启动下载过程 完成上述准备工作之后,可以通过点击调试窗口内的 “Download” 或者快捷菜单里的相应命令来启动实际的程序写入流程。如果一切顺利的话,软件会自动连接硬件并将选定的 hex 数据传输到 MCU 中存储起来[^4]。 ```python # Python 示例代码用于说明自动化脚本概念 (并非真实实现) def download_hex_to_mcu(hex_file_path, mcu_type): """ 自定义函数模拟将 HEX 文件下载到指定型号的 MCU 上 参数: hex_file_path -- 完整路径字符串指向待上传的 .hex 文件 mcu_type -- 字符串表示的目标单片机类型标识符 返回值: 成功则返回 True ,失败抛出异常信息 """ try: configure_output_settings(hex_file_path) # 设定输出设置 select_flash_tool(mcu_type) # 挑选适合的闪存工具 execute_download_command() # 发送下载指令 return True # 表明成功结束 except Exception as e: raise RuntimeError(f"Failed to upload {hex_file_path}: {e}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值