Jquery 重新格式化JSON对象

Jquery 重新格式化JSON对象,jquery,arrays,json,Jquery,Arrays,Json,我有一个JSON对象,我想重新格式化,我的意思是 JSON对象 { "query":"de mar", "suggestions":[ "Any Location", "Camp De Mar, Majorca, SPAIN", "L'amettla De Mar, Costa Dorada, SPAIN", "Lloret De Mar, Costa Brava, SPAIN", "Malgrat De Mar, Costa Brava, SPAIN",

我有一个JSON对象,我想重新格式化,我的意思是

JSON对象

{
"query":"de mar",
"suggestions":[
    "Any Location",
    "Camp De Mar, Majorca, SPAIN",
    "L'amettla De Mar, Costa Dorada, SPAIN",
    "Lloret De Mar, Costa Brava, SPAIN",
    "Malgrat De Mar, Costa Brava, SPAIN",
    "Pineda De Mar, Costa Brava, SPAIN",
    "Roquetas De Mar, Costa De Almeria, SPAIN",
    "Tossa De Mar, Costa Brava, SPAIN"
],
"data":[
    "",
    "DestinationResort|Camp De Mar",
    "DestinationResort|L'Amettla De Mar",
    "DestinationResort|Lloret De Mar",
    "DestinationResort|Malgrat De Mar",
    "DestinationResort|Pineda De Mar",
    "DestinationResort|Roquetas De Mar",
    "DestinationResort|Tossa De Mar"
]
}
我想把这变成以下内容

{
"destinations": [
    "": "Any Location",
    "DestinationResort|Camp De Mar": "Camp De Mar, Majorca, SPAIN",
    // etc etc
]
}
目前我有以下内容(jquery编码的可怜用法)

我真正想做的是使用autocomplete()或bootstrap的typeahead()来填充输入,但我认为这是我的下一步

有人能帮我吗


谢谢

您已经非常接近了,但是在创建新对象时存在一些问题

var myObject = ['destinations'];
这将创建一个包含单个元素的数组,即字符串“destinations”。您实际需要的是一个属性为空数组的对象,因此将其更改为:

var myObject = {
    destinations: []
};
.each()
迭代是正确的,但每次迭代的代码都不正确。代码所做的是获取数组
myObject
,并将其
destinations
属性(在第一次迭代中不存在)设置为与当前迭代的对象相等;相反,您希望将新对象推送到数组中。创建对象时也有问题,因为在创建对象文字时不能有动态键

$.each(data.suggestions, function (index, elem) {
    var currentObject = {}
    currentObject[data.data[index]] = elem;
    myObject.destinations.push(currentObject);
});

您已经非常接近了,但是在创建新对象时存在一些问题

var myObject = ['destinations'];
这将创建一个包含单个元素的数组,即字符串“destinations”。您实际需要的是一个属性为空数组的对象,因此将其更改为:

var myObject = {
    destinations: []
};
.each()
迭代是正确的,但每次迭代的代码都不正确。代码所做的是获取数组
myObject
,并将其
destinations
属性(在第一次迭代中不存在)设置为与当前迭代的对象相等;相反,您希望将新对象推送到数组中。创建对象时也有问题,因为在创建对象文字时不能有动态键

$.each(data.suggestions, function (index, elem) {
    var currentObject = {}
    currentObject[data.data[index]] = elem;
    myObject.destinations.push(currentObject);
});

开始不错!你只需要重新安排一下

var myObject = {'destinations': []};
$.each(data.suggestions, function (index, elem) {
  myObject.destinations[data.data[index]] = elem;
});

您知道,您希望myObject是一个json对象,正如您所描述的那样,有一个名为“destinations”的“key”,它是一个数组。从一个空数组开始,然后设置它的索引。

这是一个不错的开始!你只需要重新安排一下

var myObject = {'destinations': []};
$.each(data.suggestions, function (index, elem) {
  myObject.destinations[data.data[index]] = elem;
});

您知道,您希望myObject是一个json对象,正如您所描述的那样,有一个名为“destinations”的“key”,它是一个数组。从一个空数组开始,然后设置它的索引。

只是确认一下,
建议:[]
数据:[]
是1:1匹配吗?每一行引用另一个对象中的相应行?嗯,我可能第一次误读了这个。结果对象中的
destinations
应该是对象数组还是具有键值对的对象?我的回答假设是前者,但我想我会检查一下。只是为了确认一下,
建议:[]
数据:[]
是1:1匹配吗?每一行引用另一个对象中的相应行?嗯,我可能第一次误读了这个。结果对象中的
destinations
应该是对象数组还是具有键值对的对象?我的回答假设是前者,但我想我会核实一下。