Javascript-在多维数组中查找多个值
我需要通过一些JSON来获取一些ID。 JSON如下所示:Javascript-在多维数组中查找多个值,javascript,arrays,loops,object,multidimensional-array,Javascript,Arrays,Loops,Object,Multidimensional Array,我需要通过一些JSON来获取一些ID。 JSON如下所示: var carousel = [ { "acf": { "content": [ { "acf_fc_layout": "custom", "content": "Some text" }, { "acf_fc_layout": "exhibition", "exhibition": 2
var carousel = [
{
"acf": {
"content": [
{
"acf_fc_layout": "custom",
"content": "Some text"
},
{
"acf_fc_layout": "exhibition",
"exhibition": 2594
},
{
"acf_fc_layout": "exhibition",
"exhibition": 1234
}
]
},
}
]
对于每个内容
其中acf_fc_layout==展览
我必须获取展览的值(ID),以便可以使用它获取进一步的数据。正如您所看到的,还有多个展览ID
我在这里的困惑是对象和数组都存在,而且它们是嵌套的。我用jQuery做了一些类似的工作,但这次不可能了。我不认为我需要IE8支持,但仍然觉得这很棘手。
carousel[0].acf.content.forEach(function (item) {
if (item["acf_fc_layout"] === "exhibition") {
// do some stuff
// id for exhibition placed in item["exhibition"]
}
});
$(旋转木马)。每个(功能(i,el){
$(el.acf.content)。每个(函数(i,el){
如果(el.acf\U fc\U布局===‘展览’){
$('', {
文本:el.展览
}).appendTo($(“#results”);
}
});
});
如果
acf
有许多内容
,则需要运行额外的循环,并且acf必须是对象数组。对于当前结构,需要使用foreach并检查值
var carousel = [
{
"acf": {
"content": [
{
"acf_fc_layout": "custom",
"content": "Some text"
},
{
"acf_fc_layout": "exhibition",
"exhibition": 2594
},
{
"acf_fc_layout": "exhibition",
"exhibition": 1234
}
]
},
}
];
$.each(carousel[0].acf.content,function (i,v){
if(v.acf_fc_layout == "exhibition")
$(".result").append(v.exhibition+"<br>");
});
var carousel=[
{
“acf”:{
“内容”:[
{
“acf_fc_布局”:“自定义”,
“内容”:“一些文本”
},
{
“acf_fc_布局”:“展览”,
“展览”:2594
},
{
“acf_fc_布局”:“展览”,
“展览”:1234
}
]
},
}
];
$.each(转盘[0].acf.content,function(i,v){
if(v.acf\U fc\U布局==“展览”)
$(“.result”)。追加(v.experience+”
”;
});
如果您的JSON看起来就像您所说的,那么这是一个简单的解决方案:
var i;
for (i = 0; i < carousel[0].acf.content.length; i++) {
if (carousel[0].acf.content[i].acf_fc_layout === "exhibition") {
// do something with carousel[0].acf.content[i].exhibition
}
}
vari;
对于(i=0;i
或者,如果JSON中有更多的内容,这可能与此相关:
var i, j;
for (i = 0; i < carousel.length; i++) {
if (typeof carousel[i].acf != 'undefined' && typeof carousel[i].acf.content != 'undefined') {
for (j = 0; j < carousel[i].acf.content.length; j++) {
if (carousel[i].acf.content[j].acf_fc_layout === "exhibition") {
// do something with carousel[i].acf.content[j].exhibition
}
}
}
}
vari,j;
对于(i=0;i
啊,很简单。在IE9中工作?我想?两者都是,然后说是,forEach
从IE9.for开始工作(var I=0;Iacf
是一个关联数组。关联数组不能有多个同名键,因此它不能有“多个内容”,acf必须是对象数组。“我的评论的关键词。这是小费。
var i, j;
for (i = 0; i < carousel.length; i++) {
if (typeof carousel[i].acf != 'undefined' && typeof carousel[i].acf.content != 'undefined') {
for (j = 0; j < carousel[i].acf.content.length; j++) {
if (carousel[i].acf.content[j].acf_fc_layout === "exhibition") {
// do something with carousel[i].acf.content[j].exhibition
}
}
}
}