我从源代码收到以下对象 -
["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
如何迭代才能获取它的值?
答案 0 :(得分:1)
这是一个不是对象的数组,如果你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);
}
});
}
答案 1 :(得分:1)
这应该为您提供您正在寻找的所有元素。你如何迭代它们取决于你:
jQuery.map(data[1], function(item) {return item[0];});
// output: ["road", "roadtrip", "roadrunner", "roadster", ... ]
对于那些说“它不是一个对象,它是一个数组”的人来说,一个数组是JS中的一种对象。
- 斯科特
答案 2 :(得分:0)
提供的数据不是对象。你有一个数组,用括号'[..]'表示。此外,对象具有属性和值,即{ "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>');
}