我想循环services_raw_nl
下的所有值,并获取属于thoses值的名称和数字,例如
内部餐饮和9
和
现场音乐和6
我想使用for-in循环,但我有两个问题:
services_raw_nl
的名称也可能是services_raw_en
(取决于用户选择的语言)。services_raw_nl
下的属性的名称和值。我想将它作为JSFiddle提供,但不知道如何在那里提供JSON数据,因为这项服务尚未生效,我无法从JSFiddle中调用它。
{
"responseHeader":{
"status":0,
"QTime":1,
"params":{
"facet":"true",
"sort":"membervalue desc",
"fl":"id,city,thumb",
"facet.mincount":"1",
"indent":"on",
"start":"0",
"q":["*:*",
"*:*"],
"facet.field":["country_raw_nl",
"services_raw_nl",
"city"],
"wt":"json",
"fq":"country_nl:=australie",
"rows":"12"}},
"response":{"numFound":10,"start":0,"docs":[
{
"id":"842",
"city":"whitsundays",
"thumb":"735_739_CEREMONY-PAVILLION-2.jpg"}]
},
"facet_counts":{
"facet_queries":{},
"facet_fields":{
"country_raw_nl":[
"Australie",10],
"services_raw_nl":[
"In-house Catering",9,
"Live music",6],
"partylocation":[
"true",8,
"false",2],
"hasphoto":[
"true",9,
"false",1],
"hasvideo":[
"false",10],
"rating":[
"0.0",10],
"rating_rounded":[
"0.0",10],
"facet_dates":{},
"facet_ranges":{}}}
这是我正在尝试的循环:
for (var service in response.facet_counts.facet_fields.services_raw_nl) {
console.log(response.facet_counts.facet_fields.services_raw_nl[service].???);
}
答案 0 :(得分:1)
您可以将service_raw_nl/en
缓存到变量,并使用简单的for
循环:
var lang = 'nl', // or 'en', this you probably have stored somewhere in your preceding code?
services_raw = response.facet_counts.facet_fields['services_raw_' + lang],
n;
for (n = 0; n < services_raw.length; n++) {
console.log(services_raw[n]);
}
修改强>
此函数返回一个包含所需值的对象。
var lang = 'nl';
function getServices (response, lang) {
var services_raw = response.facet_counts.facet_fields['services_raw_' + lang],
n, temp = {};
for (n = 0; n < services_raw.length; n+= 2) {
temp[services_raw[n]] = services_raw[n + 1];
}
return temp;
}
console.log(getServices(response, lang));
编辑II
从services_raw_nl
的值创建一些HTML的简单方法是这样的:
var lang = 'nl',
services_raw = response.facet_counts.facet_fields['services_raw_' + lang],
n, outer, inner;
for (n = 0; n < services_raw.length; n += 2) {
outer = document.createElement('span');
outer.appendChild(document.createTextNode(services_raw[n]));
inner = outer.appendChild(document.createElement('span'));
inner.appendChild(document.createTextNode(services_raw[n + 1]));
what_ever_element.appendChild(outer);
}