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

# 四、参考资料

Last Updated: 2023-01-28 4:31:25