Java 脚本遍历对象数组

我有从 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


小怪兽爱吃肉
浏览 134回答 1
1回答

繁星coding

您在对象中忘记了几个逗号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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript