使用 Typescript 和 ionic 在嵌套数组中搜索

Posted

技术标签:

【中文标题】使用 Typescript 和 ionic 在嵌套数组中搜索【英文标题】:Search inside Nested array using Typescript and ionic 【发布时间】:2018-05-29 07:53:04 【问题描述】:

我想知道如何使用打字稿在嵌套数组中进行搜索 例如,如果用户输入 KNOR 我想显示整个组而不是项目。 这意味着我想检查 Name 字段并获得结果。

下面是 JSON 结构

    
        group_id: 61,
        sortid: "1",
        group_items: [
            
                group_id: "61",
                id: "1",
                code: "1",
                name: "ASTRA MARGARINE 1KG",
                bulkprice: "800.00",
                description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
                picture: [
                            "img/itemlist/astra/a1.png",
                            "img/itemlist/astra/a2.png"
                        ],
                qty: "2",
                active: "0",
                availableqty: "100",
                itemprice: "400.00"
            ,
            
                group_id: "61",
                id: "1",
                code: "4",
                name: "KNOR CHICKEN CUBE 28S CONTAINER 280G",
                bulkprice: "700.00",
                description: " Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam at enim sit amet ligula semper tempus.",
                picture: [
                            "img/itemlist/knor/k1.png",
                            "img/itemlist/knor/k2.png"
                        ],
                qty: "10",
                active: "0",
                availableqty: "1",
                itemprice: "25.00"
            
        ]
    ,

      group_id: 64,
      sortid: "2",
      group_items: [
               group_id: "64",
               id: "1",
               code: "3",
               name: "FLORA MARGARINE LARGE 500G",
               bulkprice: "20.00",
               description: "Aenean vehicula imperdiet ex, in lacinia magna 
               bibendum sed.",
               picture: [
                          "img/itemlist/flora/f1.1.png",
                          "img/itemlist/flora/f1.2.png",
                          "img/itemlist/flora/f1.png"
                        ],
               qty: "1",
               active: "0",
               availableqty: "500",
               itemprice: "700.00"
                ]

       

我想要的结果是如果用户搜索 Knor


        group_id: 61,
        sortid: "1",
        group_items: [
            
                id: "1",
                code: "1",
                name: "ASTRA MARGARINE 1KG",
                bulkprice: "800.00",
                description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
                picture: [
                            "img/itemlist/astra/a1.png",
                            "img/itemlist/astra/a2.png"
                        ],
                qty: "2",
                active: "0",
                availableqty: "100",
                itemprice: "400.00"
            ,
            
                id: "1",
                code: "4",
                name: "KNOR CHICKEN CUBE 28S CONTAINER 280G",
                bulkprice: "700.00",
                description: " Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam at enim sit amet ligula semper tempus.",
                picture: [
                            "img/itemlist/knor/k1.png",
                            "img/itemlist/knor/k2.png"
                        ],
                qty: "10",
                active: "0",
                availableqty: "1",
                itemprice: "25.00"
            

感谢快速帮助。

【问题讨论】:

我在该组的任何描述中都看不到“KNOR”...您将如何从“KNOR”映射到61?或者你想要“任何包含匹配的组”? 是的,我想要包含匹配项的组 【参考方案1】:

我写了一个非常简单易用的库ss-search。

在您搜索嵌套数组的情况下,您可以执行以下操作:

search(data, ["name"], "KNOR")

这将过滤掉数据以仅返回名称属性中包含“KNOR”的结果。

【讨论】:

【参考方案2】:

您使用以下功能来解决此问题....

test()
    var data = 
      group_id: 61,
      sortid: "1",
      group_items: [
          
              group_id: "61",
              id: "1",
              code: "1",
              name: "ASTRA MARGARINE 1KG",
              bulkprice: "800.00",
              description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
              picture: [
                          "img/itemlist/astra/a1.png",
                          "img/itemlist/astra/a2.png"
                      ],
              qty: "2",
              active: "0",
              availableqty: "100",
              itemprice: "400.00"
          ,
          
              group_id: "61",
              id: "1",
              code: "4",
              name: "KNOR CHICKEN CUBE 28S CONTAINER 280G",
              bulkprice: "700.00",
              description: " Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam at enim sit amet ligula semper tempus.",
              picture: [
                          "img/itemlist/knor/k1.png",
                          "img/itemlist/knor/k2.png"
                      ],
              qty: "10",
              active: "0",
              availableqty: "1",
              itemprice: "25.00"
          
      ]
  

   console.log('name',data)
  for(let i=0;i<data.group_items.length;i++)
    console.log('name',data.group_items[i].name)
  
  

【讨论】:

以上是关于使用 Typescript 和 ionic 在嵌套数组中搜索的主要内容,如果未能解决你的问题,请参考以下文章

在 Ionic 2 中使用第三方 cordova 插件和 TypeScript

如何在 Ionic 2 typescript 应用程序上使用没有类型定义的 javascript 库?

如何在使用 Typescript 的 Ionic App 上集成 API.AI?

带有 Ionic 2 Angular 2 和 TypeScript 的 OpenPGP

使用 Ionic + TypeScript + Angular 的混合应用程序

Ionic/React/TypeScript,使用 react-router history.push、history.replace 和 history.goBack 动画触发两次