二维数组纵横交换

换位置代码
let newArray2 = tArr[0].map(function (col, i) {
    return tArr.map(function (row) {
      return row[i];
    });
  });

有兴趣的可以往下看

前言

需求:按时间显示当前模组,测压点1…16的折线. 后台返回的数据是每个时间所有模组,所有测压点的数据。看图1表格
在这里插入图片描述
图1
最终需要换成图2表格形式;
在这里插入图片描述
图2

换完位置是图3格式,没有分模组。
在这里插入图片描述
图3

数据处理

//处理返回数据 chartsData从后台返回的数据,totalData为空数组,xData为其他数据,与此无关;
modeChartsData(chartsData, totalData, xData) {
  let tArr = [];
  let tempArr = [];
  // 返回的数据et.cell_v就是上面图1 每个time的所有数据,将所有time的数据都放在一个数组里面,这就是一个二维数组,[[time1所有数据],[time2所有数据],[time3所有数据]...];
  chartsData.forEach((et, idx) => {
    tArr.push(et.cell_v);
    xData.push(getLocalTime(et.updateTime));
  });

  console.log(tArr);
  // 换位置 图1的数据格式需要换成图2 的数据格式,在这里先换位置,再进行数组切分,因为换完位置是图3的格式,没有分模组1,2,3,4
  let newArray2 = tArr[0].map(function (col, i) {
    return tArr.map(function (row) {
      return row[i];
    });
  });
  // 分模组切割
  tempArr = groupData(newArray2, 16);
  console.log(tempArr);
},
// 分模组切割数组,
export const groupData=(array, aLength)=> {
  let idx= 0;
  let newArray = [];
  while(idx < array.length) {
    newArray.push(array.slice(idx, idx+= aLength));
  }
  return newArray;
}

后续…

每次显示一个模组的所有测压点的时间折线。同时显示16条折线。
在这里插入图片描述

参考:https://blog.csdn.net/c99441122/article/details/60140324

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于二维数组交换,可以使用双重循环,逐个元素交换,例如,假设有一个二维数组A,可以这样:for(i=0;i<A.length;i++){ for(j=0;j<A[i].length;j++){ int temp = A[i][j]; A[i][j] = A[j][i]; A[j][i] = temp; } } ### 回答2: 要实现string二维数组整体交换,可以按照以下步骤进行操作。 1. 定义一个二维数组,用于存储字符串。假设数组名为strings,长度为n,字符串的长度为m。 2. 创建一个新的二维数组newStrings,与原数组strings的结构相同。 3. 使用两个嵌套的for循环,遍历原数组strings并将其元素复制到新数组newStrings中。循环变量i表示行数,变量j表示列数。 4. 在嵌套的for循环中,将strings[i][j]复制给newStrings[j][i],即将原数组中的每个元素按照列行交换的方式复制到新数组中。 5. 完成整个二维数组的复制后,newStrings中的元素即为交换后的数组。 6. 可以输出newStrings数组来验证交换结果是否正确。 以下为示例代码: ```python # 定义原数组 strings = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] # 获取数组的行数和列数 n = len(strings) m = len(strings[0]) # 创建新的二维数组 newStrings = [['' for _ in range(n)] for _ in range(m)] # 进行数组交换 for i in range(n): for j in range(m): newStrings[j][i] = strings[i][j] # 输出交换后的数组 for row in newStrings: print(row) ``` 以上代码将输出: ``` ['a', 'd', 'g'] ['b', 'e', 'h'] ['c', 'f', 'i'] ``` 这就是交换后的整体二维字符串数组。 ### 回答3: 要实现string二维数组的整体交换,我们可以先将数组中每个元素的顺序反转,然后再对数组的行进行反转。 假设有一个m行n列的string数组arr,首先我们可以通过两个嵌套的for循环来实现每个元素的顺序反转。具体步骤如下: 1. 遍历二维数组的每一行: - 设置两个指针,一个指向当前行的开头,另一个指向末尾; - 将指针所指向的元素进行交换,并向中间移动指针,直到两个指针相遇。 完成元素顺序反转后,接下来我们需要对数组的行进行反转。可以通过两个指针分别指向数组的首行和末行,然后将两行进行交换,再向中间移动指针,直到两个指针相遇。 总结起来,整个string二维数组整体交换的步骤如下: 1. 对数组中的每一行进行元素的顺序反转; 2. 对数组的行进行反转。 代码示例如下: ```cpp #include <iostream> #include <algorithm> #include <vector> #include <string> using namespace std; void reverseString(string& str) { int start = 0, end = str.size() - 1; while (start < end) { swap(str[start], str[end]); start++; end--; } } void swapRows(vector<string>& arr) { int start = 0, end = arr.size() - 1; while (start < end) { swap(arr[start], arr[end]); start++; end--; } } void swapArray(vector<vector<string>>& arr) { for (int i = 0; i < arr.size(); ++i) { reverseString(arr[i]); // 对每一行进行元素顺序反转 } swapRows(arr); // 对行进行反转 } int main() { vector<vector<string>> arr = {{"abc", "def", "ghi"}, {"jkl", "mno", "pqr"}, {"stu", "vwx", "yz"}}; swapArray(arr); for (auto row : arr) { for (auto str : row) { cout << str << " "; } cout << endl; } return 0; } ``` 运行代码后,输出结果为: yz vwx stu pqr mno jkl ghi def abc 以上就是实现string二维数组整体交换的方法和代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值