【问题标题】:Javascript Multidimensional Array Key-ValueJavascript多维数组键值
【发布时间】:2017-06-01 08:01:39
【问题描述】:

我正在向 JSON 发出 AJAX 请求并获得以下代码作为响应:

{
  total: "1",
  items: [
    {
      id: 43,
      title: "ThisIsTheTitle",
      promoted: false,
      sticky: false,
      weight: 10,
      created: {
        timestamp: 1482054,
        formatted: "17/01/2017"
      },
      url: "http://...",
      airdate: {
        timestamp: 1484980,
        formatted: "17/01/2017"
      },
      video: {
        id: 43,
        number_of_views: 1,
        duration: {
          seconds: 50,
          formatted: "00:00"
        },
        required_login: false
      },
      program: {
        id: 25,
        url: "http://...",
        title: "ProgrammaTitel"
      },
      image: {
        uri: "public://...",
        full: "http://..."
      },
      tags: [
        {
          id: "4",
          name: "Map"
        },
        {
          id: "7",
          name: "Aflevering2"
        }
        ]
    }
  ]
}

现在我将这些数据推送到我自己的 JSArray 中。请注意,现在只有 1 个响应项,但会添加更多。

我想根据对象标签的名称检索特定的对象数据 (item > tags > name = 'Aflevering2')

所以我想要标签名称为'Aflevering2' 的对象中的数据。

有什么建议吗?谢谢!

【问题讨论】:

  • 看起来您能够获取数据(因为您已经展示了它),但让我们看看您迄今为止尝试访问相关元素的方法。请显示您的代码(即使有错误)。

标签: javascript arrays json ajax multidimensional-array


【解决方案1】:

您可以找到filter()some() 组合的项目:

obj.items.filter(v => v.tags.some(k => k.name === 'Aflevering2'));

let obj = {
    total: "1",
        items: [
    {
        id: 43,
        title: "ThisIsTheTitle",
        promoted: false,
        sticky: false,
        weight: 10,
        created: {
            timestamp: 1482054,
            formatted: "17/01/2017"
        },
        url: "http://...",
        airdate: {
            timestamp: 1484980,
            formatted: "17/01/2017"
        },
        video: {
            id: 43,
            number_of_views: 1,
            duration: {
                seconds: 50,
                formatted: "00:00"
            },
            required_login: false
        },
        program: {
            id: 25,
            url: "http://...",
            title: "ProgrammaTitel"
        },
        image: {
            uri: "public://...",
            full: "http://..."
        },
        tags: [
            {
                id: "4",
                name: "Map"
            },
            {
                id: "7",
                name: "Aflevering2"
            }
        ]
    }
]
}

let items = obj.items.filter(v => v.tags.some(k => k.name === 'Aflevering2'));
console.log(items);

【讨论】:

  • 我假设v => v.tags.some(k => k.name === 'Aflevering2') 被缩短了?如何将此代码翻译为“全长”?因为我在警告中加入了这一点:arrow function syntax (=>)' is only available in ES6 (use esnext option) 我想了解我编写的代码:)
  • @Kemagezien 这是一个箭头函数,它没有被缩短。 Google for 箭头函数js,第一个结果会深入讲解。
  • 感谢您提供的信息,我对箭头函数进行了一些研究。但是,例如Safari 不支持箭头功能。是否可以在没有箭头功能的情况下重写它?
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多