我收到以下对象,它是我从源接收到的-
["road",[["road",53,"0E"],["roadtrip",53,"1E"],["roadrunner",53,"2E"],["roadster",53,"3E"],["roadside",53,"4E"],["roadrage",53,"5E"],["roadcycling",53,"6E"],["roadsideamerica",53,"7E"]],{"k":1,"q":"lpxvQlflqTsJ-2_PMBLImSpu1PU"}]我想要从对象获取的值:
road, roadtrip, roadrunner, roadster and so on.下面是代码
$('#query').autocomplete({
source: function( request, response ) {
$.ajax({
type: "GET",
url: , // url for the source
dataType: "json",
data: {
"tags" : request.term
},
success: function( data ) {
related = data[1];
response(data[1][0]);
}
});
}但是我只从对象的第一个数组中获得值?例如。road OE
应该如何迭代来获取它的值?
发布于 2012-07-07 01:19:30
这是一个数组,而不是一个对象,如果你JSONLint它:
[
"road",
[
[
"road",
53,
"0E"
],
[
"roadtrip",
53,
"1E"
],
[
"roadrunner",
53,
"2E"
],
[
"roadster",
53,
"3E"
],
[
"roadside",
53,
"4E"
],
[
"roadrage",
53,
"5E"
],
[
"roadcycling",
53,
"6E"
],
[
"roadsideamerica",
53,
"7E"
]
],
{
"k": 1,
"q": "lpxvQlflqTsJ-2_PMBLImSpu1PU"
}
]可以看到,第一个键是字符串"road",第二个键是一个数组,最后一个键是一个对象。
您要查找的项是主数组的第二个键中的数组的第一个键。
尝试如下所示:
$('#query').autocomplete({
source: function( request, response ) {
$.ajax({
type: "GET",
url: , // url for the source
dataType: "json",
data: {
"tags" : request.term
},
success: function( data ) {
var terms = [];
for (var i=0; i < data[1].length; i++) {
terms.push(data[1][i][0]);
}
respond(terms);
}
});
}发布于 2012-07-07 01:46:40
这将为您提供您正在寻找的所有元素。然后如何迭代它们由您决定:
jQuery.map(data[1], function(item) {return item[0];});
// output: ["road", "roadtrip", "roadrunner", "roadster", ... ]顺便说一下,对于那些说“它不是一个对象,它是一个数组”的人来说,数组在JS中是一种对象类型。
--斯科特
发布于 2012-07-07 01:19:35
提供的数据不是对象。您有一个数组,它通过使用括号'..‘来表示。此外,对象还具有属性和值,即{ "road": 53 }。
假设您有一个格式正确的对象,那么您可以在jQuery中使用$.getJSON()函数。
然后,您可以遍历有效的对象并相应地访问所需的属性。
HTML
<div></div>jQuery:
var obj = {
"road": [
{
"name": "roadtrip"
},
{
"name": "roadrunner"
}
]
};
var data = obj.road;
for(var i=0; i < data.length; i++){
$('div').append(data[i].name + '<br>');
}演示:http://jsfiddle.net/6S6DJ/
https://stackoverflow.com/questions/11366778
复制相似问题