首页 > 解决方案 > Wix Velo — 如何使用对象数组

问题描述

我目前正在Wix 上建立一个网站,但遇到了一个我无法摆脱的问题。Wix 支持或 Wix Velo 论坛都无法帮助我。

我有一个连接到 Stores/Products 集合的转发器,在 Stores/Products 集合中有一个包含产品附加信息部分的集合字段。我有三个信息部分;节奏、流派和标签。每个都包含一个描述。

它看起来像这样:

    [
  {
    "title": "Tempo",
    "description": "<p>142 BPM</p>\n"
  },
  {
    "title": "Genre",
    "description": "<p>Jazz</p>\n"
  },
  {
    "title": "Tags",
    "description": "<p>Frank Ocean, Travis Scott</p>\n"
  }
]

我已经想出了如何使用以下代码提取单个对象:

export function audioRepeater_itemReady($item, itemData, index) {
    let product = $item('#dataset3').getCurrentItem(itemData._id)
    let ArrayAdditionalInfo = []
        ArrayAdditionalInfo = product.additionalInfoSections
        ArrayAdditionalInfo.forEach((element) => {
    
            console.log(element.title)
            console.log(element.description)
        })

但我希望它能够弄清楚例如。Title === "Genre",然后它将显示该数组中的描述,如下所示:

{
        // if equal to this:
        "title": "Genre",

        // show me this
        "description": "<p>Jazz</p>\n"
      },

整个计划是在我可以在转发器中实现的文本元素中显示描述输出。我尝试过使用if语句,但我自己无法将它们组合在一起。如果这令人困惑,我很乐意详细说明。

先感谢您。

标签: javascriptjqueryarraysobject

解决方案


我认为您的问题与处理程序有关。您使用中继器 onItemReady 处理程序,这不是您的情况的最佳选择。它要求中继器中的每一行。而不是这个,我建议使用数据集的 onReady

$w("#dataset3").onReady( () => {
     console.log("The dataset is ready");
     $w("#audioRepeater").getItems(0, 20).then( (result) => {
        let items = result.items;
        items.forEach((element) => {
           if (element.title === 'Genre') {
              doWhatDoYouWant(element)
           }
        }) 
     } ).catch( (err) => {
        let errMsg = err.message;
        let errCode = err.code;
     } );
} );

请注意这个块应该被插入到 $w.onReady


推荐阅读