如何在内部使用不同的键名和内容获取嵌套的json数组数据?

时间:2015-06-23 10:54:44

标签: javascript jquery arrays json

我有一个json数组我试图从中获取数据。这是我目前正在看的内容:

the data I am looking at

我在jquery / javascript下面生成了这个并给我这个我可以玩的数据,这里的重要部分是下面的nodes对象,这就是获得不同布局的原因:

var getPosts = function() {

        $.ajax({
          url: '/wp-json/posts?type=case-studies',
          data: {
            filter: {
            'name': _last
            }
          },
          success: function ( dataS ) {
            //List some global variables here to fetch post data
            // We use base as our global object to find resources we need
            var base = dataS[0];
            console.log(base);
            var postContent = base.content;
            var postTitle = base.title;
            // Main Image ACF object
            var featuredImage = base.meta.main_image;
            // Gallery ACF object
            var nodes = base.meta.work_content;
            // Simple ACF object
            //var textArea = base.meta.work_content[1];
            var items = [];
            for(var i = 0; i < nodes.length; i++)
            {
                var layout = nodes[i];
                var layoutNames = layout.acf_fc_layout;
                items.push( layout.acf_fc_layout['gallery']);
                console.log(layout);
            };
            $('<div>', {
                "class":'loaded',
                html:items.join('')
              }).appendTo(projectContainer);
          },
          cache: false
        });

    };

**这里用json本身编辑**

json文件here

这些项目的顺序非常重要,无法操作,我需要做的是获取每个对象并使用不同的标记布局附加到每个对象的容器中。

每个对象都有acf_fc_layout作为其不同的关键,​​我的问题是如何区分我使用该密钥获得的不同数据并为每个提供不同的标记?我知道有些人需要进一步创建循环以获取图像等我可以做到这一点。 要记住的另一个重要事项是,会有多个相同的acf_fc_layout项目,但内容不同。

干杯

1 个答案:

答案 0 :(得分:1)

var items = [];
var layoutNames = [];
            for(var i = 0; i < nodes.length; i++)
            {
                var layout = nodes[i];
                layoutNames.push(layout.acf_fc_layout);
                console.log(layout);
            };
//now loop on each layoutNames 
$(layoutNames).each(function (){
     for(var i = 0; i < nodes.length; i++)
            {                
                var layout = nodes[i];
                if(layout.acf_fc_layout==$(this).val())
                //Perform Operation either image / video / page layout
                console.log(layout);
            };
})