Solidity 练习:数组移位
睡不醒的鲤鱼 2022-12-29 Web3 Solidity
# 一、题目说明
当使用 delete 删除数组元素时,它不会缩小数组长度。
这在数组中留下了一个间隙。在这里,我们介绍一种在删除元素后缩小数组的技术。
# 二、任务列表
- 删除 _index 处的元素,然后将数组长度缩小 1。
- 这可以通过从 _index + 1 开始逐个向左移动数组元素,然后通过调用 pop 删除最后一个元素来完成。
# 三、解答代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract ArrayShift {
uint[] public arr = [1, 2, 3];
function remove(uint _index) external {
require(_index < arr.length, "index out of bound");
for (uint i = _index; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
arr.pop();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15