javascript - 将 Array 对象转换为字符串 jquery
问题描述
我正在通过 ajax 发布表单,并希望发送表单数据,如 string 。下面是我的代码。
var formdata=$(this).serializeArray();
var objList = [];
for (var i = 1; i <= $("input[name=Range]").val(); i++) {
tempObj = {};
$.each(formData, function (key, value) {
if (value.name.startsWith("member"){
}
else {
tempObj[value.name] = value.value;
}
});
tempObj["member"] = $("input[name=member"+i+"]").val();
tempObj["Range"] = 1;
objList.push(tempObj);
}
console.log(objList);
如果 Range = '2' 我在控制台中得到 2 个数组对象,如下所示:
Name:"John"
Department:"Training"
Areacode:"23"
Member:"2"
Name:"Sam"
Department:"HR"
Member:"2"
Areacode:"13"
但我想将数据作为表单 URL 发布,例如:
"Name=John&Department=Training&Member=2&Areacode=23"
"Name=Sam&Department=HR&Member=1&Areacode=13"
我可以在代码中做什么?
解决方案
我将继续你的代码而不是修改你所拥有的。
我们从objList
. 我们将映射这个数组以创建一个新数组,但不是对象数组,它将是一个字符串数组。
然后,您可以添加 reduce 方法来迭代对象并创建字符串,无论它有多少值。
var formdata = $(this).serializeArray();
var objList = [{
Name:"John",
Department:"Training" ,
Areacode:"23",
Member:"2"},{
Name:"Sam" ,
Department:"HR",
Member:"2",
Areacode:"13",
Extra:"value"}];
let arrStr = objList.map(obj => {
return Object.entries(obj).reduce( (key, val,i) => `${key}${i>0?'&':''}${val[0]}=${val[1]}`, "");
})
console.log("This is the array of strings:"+arrStr);
console.log("String 1:"+arrStr[0]);
console.log("String 2:"+arrStr[1]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
"Name=John&Department=Training&Member=2&Areacode=23"
希望这可以帮助 :)
推荐阅读
- r - 基于 R Shiny 中的 selectInput 的子集数据帧
- azure - 有没有办法在订阅范围内赋予用户所有者角色,但拒绝/读取不是由他创建的资源组?
- android - Android导航组件如何打开新片段而不将其添加到backStack?
- python - 嵌套列表Python中的列表理解
- android - “未找到 ID 为 'io.fabric' 的插件”错误。从 build.gradle 中删除织物后
- java - 使用密码查询导入 Neo4j 形状文件时出错
- javascript - Blazor 到 Javascript 字节数组互操作
- python - python中的FM解调问题 - wow&flutter测量
- javascript - 悬停时动画 SVG - 悬停时不要做微笑
- sql - 在两个不同的表Oracle之间计数