【问题标题】:Display all the slugs of a nested array显示嵌套数组的所有 slug
【发布时间】:2021-11-06 02:28:38
【问题描述】:

我不明白为什么。 我有一个包含所有帖子数据的数组(json 文件),我想在我的页面上显示一些元素。 我成功地显示了简单的元素,但我不知道如何显示嵌套数组的每个元素。 我想显示每个帖子的所有 slug 类别。使用我的 const post_category 我只能访问第一个 slug。

这就是我的代码。谢谢!

[{
  "id": 510,
  "slug": "red-bull",
  "title": "Red Bull™",
  "link": "#",
  "thumbnail": "#",
  "category": [{
    "term_id": 7,
    "name": "Identité Visuelle",
    "slug": "iv",
    "term_group": 0,
    "term_taxonomy_id": 7,
    "taxonomy": "categorie",
    "description": "",
    "parent": 0,
    "count": 25,
    "filter": "raw",
    "term_order": "1"
  }, {
    "term_id": 3,
    "name": "Signalétique",
    "slug": "s",
    "term_group": 0,
    "term_taxonomy_id": 3,
    "taxonomy": "categorie",
    "description": "",
    "parent": 0,
    "count": 7,
    "filter": "raw",
    "term_order": "5"
  }]
}, {
  "id": 491,
  "slug": "dogzout-records",
  "title": "Dogzout Records®",
  "link": "#",
  "thumbnail": "#",
  "category": [{
    "term_id": 7,
    "name": "Identité Visuelle",
    "slug": "iv",
    "term_group": 0,
    "term_taxonomy_id": 7,
    "taxonomy": "categorie",
    "description": "",
    "parent": 0,
    "count": 25,
    "filter": "raw",
    "term_order": "1"
  }, {
    "term_id": 6,
    "name": "Vidéo Motion",
    "slug": "vm",
    "term_group": 0,
    "term_taxonomy_id": 6,
    "taxonomy": "categorie",
    "description": "",
    "parent": 0,
    "count": 19,
    "filter": "raw",
    "term_order": "2"
  }]
}, {
  ...
}]
$('#project-loader').on('click', function () {

            let pull_page = 1;
            let jsonFlag = true;

            if (jsonFlag) {
                jsonFlag = false;
                pull_page++;
                $.getJSON("/bklt-wp/wp-json/projets/all-projects?page=" + pull_page, function (data) {
                    if (data.length) {
                        var items = [];

                        $.each(data, function (key, val) {
                            const arr = $.map(val, function (el) { return el });
                            // const post_url = arr[1];
                            const post_title = arr[2];
                            const post_link = arr[3];
                            const post_thumbnail = arr[4];
                            const post_category = arr[5].slug;

                            let item_string = '<li class="project__item"><a href="' + post_link + '" class="project__link" data-project="' + post_category + '">' + post_title + '\xa0' + '<div class="project__italic">(<ul class="category__list italic plus"></ul>)</div><span>,' + '\xa0' + '</span></a><img src="' + post_thumbnail + '" class="project__img"></li>';
                            items.push(item_string);

                        });

                        for (var i = 0; i < data.length; i++) {

                            if (data[i]["category"].length > 0) {
                                var outputhtml = "";
                                outputhtml += "(";
                                outputhtml += data[i]["category"].map(a => a.slug).join();
                                outputhtml += ")";
                            }

                            $(".category__list .italic .plus").append('<li class="category__item">' + outputhtml + '</li>');

                        }

                        if (data.length >= 25) {
                            $('li.loader').fadeOut();
                            $(".project__list").append(items);
                        } else {
                            $(".project__list").append(items);
                            $('#project-loader').hide();
                            $('#ajax-no-posts').fadeIn();
                        }
                    } else {
                        $('#project-loader').hide();
                        $('#ajax-no-posts').fadeIn();
                    }
                }).done(function (data) {
                    if (data.length) { jsonFlag = true; }
                });
            }

        });

【问题讨论】:

    标签: javascript jquery arrays json


    【解决方案1】:

    你想要这样的东西。显示父类 slug 和他们的子 slug? 我刚刚使用循环进行演示。你可以得到想法

    var x = [
      {
        id: 510,
        slug: "red-bull",
        title: "Red Bull™",
        link: "#",
        thumbnail: "#",
        category: [
          {
            term_id: 7,
            name: "Identité Visuelle",
            slug: "iv",
            term_group: 0,
            term_taxonomy_id: 7,
            taxonomy: "categorie",
            description: "",
            parent: 0,
            count: 25,
            filter: "raw",
            term_order: "1",
          },
          {
            term_id: 3,
            name: "Signalétique",
            slug: "s",
            term_group: 0,
            term_taxonomy_id: 3,
            taxonomy: "categorie",
            description: "",
            parent: 0,
            count: 7,
            filter: "raw",
            term_order: "5",
          },
        ],
      },
      {
        id: 491,
        slug: "dogzout-records",
        title: "Dogzout Records®",
        link: "#",
        thumbnail: "#",
        category: [
          {
            term_id: 7,
            name: "Identité Visuelle",
            slug: "iv",
            term_group: 0,
            term_taxonomy_id: 7,
            taxonomy: "categorie",
            description: "",
            parent: 0,
            count: 25,
            filter: "raw",
            term_order: "1",
          },
          {
            term_id: 6,
            name: "Vidéo Motion",
            slug: "vm",
            term_group: 0,
            term_taxonomy_id: 6,
            taxonomy: "categorie",
            description: "",
            parent: 0,
            count: 19,
            filter: "raw",
            term_order: "2",
          },
        ],
      },
    ];
    //updated ans:
    for (var i = 0; i < x.length; i++) {
    
    var outputhtml="";
      outputhtml += x[i]["slug"];
      if (x[i]["category"].length > 0) {
        outputhtml +="(";
        outputhtml+=x[i]["category"].map(a => a.slug).join();
        outputhtml +=")"
      }
    
    console.log(outputhtml);
    $(".category__list").append('<li class="category__item">' + outputhtml + '</li>');
    }
    
    /* old ans
    for (var i = 0; i < x.length; i++) {
      console.log("parent slug:", x[i]["slug"]);
      if (x[i]["category"].length > 0) {
        for (var j = 0; j < x[i]["category"].length; j++) {
          console.log("child slug->", x[i]["category"][j]["slug"]);
        }
      }
    }
    */
    <script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <!-- working here. -->
    <div class="category__list"></div>

    【讨论】:

    • 感谢您的帮助 :) 我只想要孩子蛞蝓,你的代码似乎工作,但不是我的情况,我总是得到一个未定义的值。例如,使用您的代码,我得到:“parent slug : undefined”...
    • 你能更新问题并分享更新的演示数据数组吗?谢谢:)
    • 我和你一样得到了值,但我不知道如何在 html 中显示它们。对于每个帖子,我想显示所有类别的 slug。以 Red Bull 为例,我想要显示:Red Bull (iv, s)。您可以在我之前的代码中看到我可以显示标题,但不能显示每个帖子的 slug 列表。
    • 没人帮我吗?从现在开始,我真的很挣扎。我想在 item_string 变量中显示我的 slug 名称。
    • 我更新了我的答案,检查一下。并提供尽可能多的信息,以便轻松获得解决方案
    猜你喜欢
    • 2021-03-29
    • 2019-09-29
    • 2023-01-28
    • 1970-01-01
    • 2019-07-28
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多