提问,二维数组怎么分别遍历
有一个数组
arr = [{uid: 123}, {uid: 234}, {uid: 345}, {uid: 456}, {uid: 678}, {uid: 789}]
然后把它切割分成两组了
let index = 0; let newArray = [];
while (index < arr.length) newArray.push(arr.slice(index, index += 3));
return newArray;
结果是这样
[[{uid: 123}, {uid: 234}, {uid: 345}], [{uid: 456}, {uid: 678}, {uid: 789}]]
现在我想分别取到数组里的对象(不是值),并且保持分组关系不变,然后append到FormData对象,一个分组append一次,就是这里两组的话就append两次,然后每append一次就提交一次数据给后端,请问可以实现吗
补充:每次append的时候只能往新的FormData里append,不能有上一次append的数据
回答:
从你回复的评论来看,问题不在怎么遍历上,而是要怎么处理 FormData。
首先,FormData 本身是可以作为参数传递的,但是看你的要求,是想处理成 Query String,也简单,用 URLSearchParams
就能处理
new URLSearchParams(formData).toString()
如果你想遍历所有键值对,直接用 .entries()
就可以
const pairs = [...formData.entries()]
如果想处理成 JSON
Object.fromEntries(formData.entries())
但是像你这个情况加入了多个 uid
的情况只能保留一个,不过可以手工处理
Object.fromEntries( [...new Set(a.keys())]
.map(key => [key, a.getAll(key)])
// getAll() 拿到的一定是个数组,如果只有一个元素,就展开它
.map(([k, v]) => [k, v.length > 1 ? v : v[0]])
)
总之,FormData 是可以遍历的,所以要怎么处理都行。URLSearchParams 是个不错的工具类。
回答:
for (let i = 0; i< newArray.length; i++) { for (let j = 0; j<newArray[i].length; j++) {
// 在这提交FormData, 读取newArray[i][j]就好了
}
}
回答:
根据你的描述,我感觉是在是formdata.append赋值的时候出了问题,formdata.append的value参数是在只能接受USVString类型和Blob类型的数据的,具体请参考https://developer.mozilla.org...。
你可以试试formdata.append("uid", "123")
这样的写法。
以上是 提问,二维数组怎么分别遍历 的全部内容, 来源链接: utcz.com/p/936724.html