我有从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
对象中的几个逗号。下一个问题是您试图检查departmentId
in permissions
,但实际上它在depId
那儿。接下来的事情是您不需要定义和跟踪i
and 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] 删除。
我来说两句