[英]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
。 接下来的事情是您不需要定义和跟踪i
和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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.