将数据按照几个为一组重新放置进数组

这段代码展示了如何根据设备列表进行分组,每组包含不超过三个设备。首先计算设备列表长度的向上取整,然后根据余数进行分组。如果余数大于等于2,则将剩余设备放入新数组。否则,所有设备组成一个分组。最终实现将设备按指定数量分组的目的。

数据 :

      // this.queryDeviceList = [{
              //         deviceName: "灯光",
              //         flagName: "lamp",

              //         logoStyle: {
              //             background: ' url("/static/images/card/lamb_logo@2x.png") no-repeat',
              //             backgroundSize: '100% 100%',
              //         },

              //         value: [{
              //                 id: 94,
              //                 name: "灯光1",
              //                 lampState: ["关闭", "打开"],
              //             },
              //             {
              //                 id: 95,
              //                 name: "灯光2",
              //                 lampState: ["关闭", "打开"],
              //             },
              //         ],
              //     },
              //     {
              //         deviceName: "测试",
              //         flagName: "lamp",

              //         logoStyle: {
              //             background: ' url("/static/images/card/lamb_logo@2x.png") no-repeat',
              //             backgroundSize: '100% 100%',
              //         },
              //         value: [{
              //                 id: 94,
              //                 name: "灯光1",
              //                 lampState: ["关闭", "打开"],
              //             },
              //             {
              //                 id: 95,
              //                 name: "灯光2",
              //                 lampState: ["关闭", "打开"],
              //             },
              //         ],
              //     },
              //     {
              //         deviceName: "窗帘",
              //         flagName: "curtain",
              //         allControlFlag: false,
              //         logoStyle: {
              //             background: ' url("/static/images/card/curtain_logo@2x.png") no-repeat',
              //             backgroundSize: '100% 100%',
              //         },
              //         value: [{
              //                 id: 91,
              //                 name: "窗帘1",
              //                 currentState: ["关闭", "打开", "停止"],
              //             },
              //             {
              //                 id: 92,
              //                 name: "窗帘2",
              //                 currentState: ["关闭", "打开", "停止"],
              //             },
              //         ],
              //     },

              //     {
              //         deviceName: "空调",
              //         flagName: "air",

              //         logoStyle: {
              //             background: ' url("/static/images/card/airconditioner_logo@2x.png") no-repeat',
              //             backgroundSize: '100% 100%',
              //         },
              //         value: [{
              //             id: 106,
              //             name: "空调",
              //             airState: ["打开空调", "关闭空调"],
              //             airWindVelocity: [
              //                 "风速一档",
              //                 "风速二档",
              //                 "风速三档",
              //                 "风速自动",
              //             ],
              //             airmodel: ["制热模式", "制冷模式", "送风模式", "自动模式"],
              //             setAirWind: {
              //                 base: "设置温度",
              //                 choose: [
              //                     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
              //                     31, 32,
              //                 ],
              //             },
              //         }, ],
              //     },
              //     {
              //         deviceName: "大屏",
              //         flagName: "screen",

              //         logoStyle: {
              //             background: 'url("/static/images/card/screen_logo@2x.png") no-repeat',
              //             backgroundSize: '100% 100%',
              //         },
              //         value: [{
              //                 id: 109,
              //                 name: "大屏1",
              //                 screenState: ["打开", "关闭"],
              //             },
              //             {
              //                 id: 110,
              //                 name: "大屏2",
              //                 screenState: ["打开", "关闭"],
              //             },
              //         ],
              //     },
              // ];

例:三个为一组

let num = Math.ceil(deviceList.length / 3);

先向上取整 取余 

当数量超过3个时会有余数

      当余数大于等于2时将剩下的放入新的数组中


                    if (num >= 2) {
                        for (let i = 0; i < num; i++) {
                            if (i === num - 1) {
                                this.tabList.push(

//有超过三个的倍数,但是这些组最后的没有满足3个 ,  取从3倍数开始一直到结尾
                                    deviceList.slice(i * 3, deviceList.length)
                                );
                                console.log(this.tabList);
                                return;
                            } else {


                                this.tabList.push(
                                    deviceList.slice(i * 3, (i + 1) * 3)
                                );
                                console.log(this.tabList);
                            }
                        }
                    } else {

// 全部数量未满三个
                        this.tabList.push(deviceList);
                    }

以上无用直接用下面这个

let arr = [];
        let num = 4 // 填写需要分割成几个一组的数量
          if (this.imgData.length) {
              for (let i = 0; i < this.imgData.length; i += num) {
                  arr.push(this.imgData.slice(i, i + num));
              }
          }

### 如何用C++实现将一个数插入到有序数组中的算法 在C++中,可以通过调整数组元素的位置来实现在有序数组中插入新元素的功能。以下是基于已有引用内容以及专业知识的一种具体实现方式。 #### 方法描述 为了保持数组的顺序,在插入新元素之前需要先找到该元素应插入的具体位置。随后通过移动后续元素腾出空间完成插入操作。这种方法的时间复杂度主要取决于查找插入点的操作和数据搬移的过程。 下面是一个完整的代码示例: ```cpp #include <iostream> using namespace std; int main() { int n, m, num; cin >> n; // 输入要插入的数值 cin >> m; // 输入当前数组长度 int a[m + 1]; // 初始化数组并读取现有元素 for (int i = 0; i < m; ++i) { cin >> a[i]; } // 查找插入位置 int pos = 0; while (pos < m && a[pos] < n) { pos++; } // 向后移动元素以腾出空间 for (int i = m; i > pos; --i) { a[i] = a[i - 1]; } // 插入目标值 a[pos] = n; // 输出最终结果 for (int i = 0; i <= m; ++i) { cout << a[i] << " "; } return 0; } ``` 上述程序实现了在一个已排序好的整型数组 `a` 中插入一个新的整数 `n` 的功能[^3]。其中,变量 `m` 表示原始数组的有效长度;通过循环比较确定待插数字应该放置的位置索引 `pos` 并执行必要的位移动作。 另外一种思路是借助标准库函数简化部分逻辑处理过程。比如可以直接调用 `<algorithm>` 头文件里的 `std::sort()` 函数重新整理整个序列达到同样效果[^1]。不过这种方式可能效率较低因为每次都需要完全重排一次列表而不是仅仅局部调整几个项目而已。 如果考虑更高效的方法,则可以采用二分查找法快速定位适合的新成员安置地点从而减少不必要的对比次数提升性能表现尤其当面对大规模数据集时尤为明显[^2]。 ### 注意事项 - 上述例子假设输入的是升序排列的数据集合。 - 如果原数组接近满载状态则需额外注意内存溢出风险或者提前预留足够的存储容量以防意外情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值