繁体   English   中英

Java 脚本循环遍历对象数组

[英]Java script loop through array of objects

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

 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对象中的几个逗号。 下一个问题是您试图在permissions检查departmentId depId ,但实际上是depId那里的depId 接下来的事情是您不需要定义和跟踪ij ,它们在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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM