Java脚本遍历对象数组

阿拉

我有从html表读取的对象的Java脚本数组,如下所示: depId代表行号,branchId代表列号,并用复选框(vue js v-model)3 * 3表数据链接它的val

 permissions=   [
    [{depId:1,branchId:1,val:true},{depId:1,branchId:2,val:true},{depId:1,branchId:3}],
    [{depId:2,branchId:1},{depId:2,branchId:2},{depId:2,branchId:3}],
    [{depId:3,branchId:1},{depId:3,branchId:2},{depId:3,branchId:3,val:true}]
    ]

我需要将此数据发送到axios API,但数据应采用以下格式

data[0][branches][0]=1
data[0][branches][1]=2
data[0][department]=1  

data[1][branches][0]=3
data[1][department]=3

我尝试过类似的操作,但是有问题(数据在错误的索引中发送)

let data={};
   permissions.forEach((row, i) => {
      row.forEach((col, j) => {
        if (col["val"] === true) {
          data[`data[${i}][branches][${j}]`] = col.branchId;
          data[`data[${i}][department]`] = col.deptId;
        }
      });
    });
        console.log(data);

循环应该如何以正确的方式发送数据?

当前结果是

"data[0][branches][0]": 1,
  "data[0][department]": 1,
  "data[0][branches][1]": 2,
  "data[2][branches][2]": 3,
  "data[2][department]": 3
伊万德

您忘记了permissions对象中的几个逗号下一个问题是您试图检查departmentIdin permissions,但实际上它在depId那儿。接下来的事情是您不需要定义和跟踪iand j,它们很方便地在forEach函数中作为传递给运行函数的第二个参数提供给您

这是您要实现的目标的工作版本:

permissions = [
  [{
    depId: 1,
    branchId: 1,
    val: true
  }, {
    depId: 1,
    branchId: 2,
    val: true
  }, {
    depId: 1,
    branchId: 3
  }],
  [{
    depId: 2,
    branchId: 1
  }, {
    depId: 2,
    branchId: 2
  }, {
    depId: 2,
    branchId: 3
  }],
  [{
    depId: 3,
    branchId: 1
  }, {
    depId: 3,
    branchId: 2
  }, {
    depId: 3,
    branchId: 3,
    val: true
  }]
]

let data = {};
let j = 0;

permissions.forEach((row) => {
  let i = 0;
  let departmentSeen = false;

  row.forEach((col) => {
    if (col["val"] === true) {
      data[`data[${j}][branches][${i}]`] = col.branchId;
      data[`data[${j}][department]`] = col.depId;
      i++;
      departmentSeen = true;
    }
  });

  if (departmentSeen) {
    j++;
  }
});

console.log(data);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章