提问,二维数组怎么分别遍历

提问,二维数组怎么分别遍历

有一个数组

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

回到顶部