如何使用两个数组创建一个json数据并将其返回给ajax
Posted
技术标签:
【中文标题】如何使用两个数组创建一个json数据并将其返回给ajax【英文标题】:How to create a json data using two arrays and return it to ajax 【发布时间】:2016-08-25 16:02:52 【问题描述】:键:[id,name,address]
值:[7,John,NewYork]
我希望使用 for(...)... 创建一个像"id": 7, "name": "John", "address": "NewYork"
这样的 json 数据,
然后返回给ajax
$.ajax(
//what kind of format should json data be here?
data:??json data??,
dataType: 'json',
);
请帮帮我
【问题讨论】:
【参考方案1】:你可以:
遍历两个数组...
...将第一个数组元素作为键添加到空 obj...
...并将第二个数组元素作为它的值分配给第一个数组元素。
当字符串化为 JSON 时,每次迭代都将作为键/值配对。
我很惊讶它确实有效,看看下面的演示:
片段
var x = ['id', 'name', 'address'];
var y = [7, 'John', 'NewYork'];
function arrMerge(k, v)
var obj = ;
for (var i = 0; i < k.length; i++)
obj[k[i]] = v[i];
return obj;
var z = arrMerge(x, y);
var json = JSON.stringify(z);
console.log(json);
【讨论】:
感谢帮助,$.ajax(...data:json,...),返回数据成功。 不客气,先生。我正准备做 AJAX 部分,但我看到你已经处理了那部分。【参考方案2】:我想与 forEach 不同,因为它返回结果,Array.prototype.reduce()
对于这些操作非常方便。您甚至可以在声明 JSON 数据的阶段使用它(jData
此处)。
var key = ['id', 'name', 'address'],
value = [7, 'John', 'New York'],
jData = JSON.stringify(key.reduce((p,c,i) => p[c] = value[i]; return p,));
document.write("<pre>" + jData + "</pre>");
【讨论】:
【参考方案3】:您可以编写一个通用函数,如果两个数组长度相等(同时假设它们的顺序正确),则将它们一起压缩成一个对象。
function zip(arr1, arr2)
if (arr1.length !== arr2.length) return false;
const obj = ;
for (let i = 0; i < arr1.length; i++)
const key = arr1[i];
obj[key] = arr2[i];
return obj;
zip(arr1, arr2); // id: 7, name: "John", address: "NewYork"
DEMO
然后,您可以在 AJAX 进程中将该对象用作 data
的值。
数据
类型:PlainObject 或字符串或数组
要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。
jQuery documentation
【讨论】:
根据你的demo,我可以一步步理解obj的构建过程了。【参考方案4】:到你问题的第一部分:
您可以使用Array#forEach()
并为所有属性分配对应的值。
var key = ['id', 'name', 'address'],
value = [7, 'John', 'New York'],
object = ;
key.forEach(function (k, i)
object[k] = value[i];
)
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
【讨论】:
您也可以在创建object
时使用Array#reduce
以避免独立的forEach
。 jsfiddle.net/5qhyp9eL/1
非常感谢,按照您的建议,我的问题已经解决了。以上是关于如何使用两个数组创建一个json数据并将其返回给ajax的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SqlDataReader 之前知道或获取数组大小?并将其作为 json 返回
如何在json android中返回多行并将其传递给sqlite
如何从小部件的函数返回值,并将其传递给 Tkinter,Python 中的另一个小部件的函数
如何使用无服务器创建 API 密钥并将其分配给创建的阶段 API?