簡體   English   中英

包含數組的 JS 過濾器 Object

[英]JS Filter Object that includes array

我試圖過濾一個包含數組的 JS object。 我想檢查idmatchcodedescription 那是我試過的是:

    let search = articles.filter(function(item){
      return (item.matchcode.includes(articleno) || item.description.includes(articleno) || item.id.includes(articleno))
    })

即object:

let articles = '[ {
        "id": "35",
        "matchcode": "KM Anteile  S",
        "description": "KM Anteile  S ",
        "unit": "STK",
        "salesPrice": 0.7,
        "stock": "HL-F",
        "stockAmount": -3282
    },
    {
        "id": "41",
        "matchcode": "Arbeitszeit",
        "description": "Arbeitszeit ",
        "unit": "STD",
        "salesPrice": 76.8,
        "stock": "HL-F",
        "stockAmount": 0.75
    }, {
        "id": "502019",
        "matchcode": "Gummimuffe 100 mm",
        "description": "Gummimuffe 100 mm ",
        "unit": "STK",
        "salesPrice": 9.8,
        "stock": "HL-F",
        "stockAmount": 15
    }';

當我嘗試時,出現錯誤,該filter不是 function。

 let articles = [ { "id": "35", "matchcode": "KM Anteile S", "description": "KM Anteile S ", "unit": "STK", "salesPrice": 0.7, "stock": "HL-F", "stockAmount": -3282 }, { "id": "41", "matchcode": "Arbeitszeit", "description": "Arbeitszeit ", "unit": "STD", "salesPrice": 76.8, "stock": "HL-F", "stockAmount": 0.75 }, { "id": "502019", "matchcode": "Gummimuffe 100 mm", "description": "Gummimuffe 100 mm ", "unit": "STK", "salesPrice": 9.8, "stock": "HL-F", "stockAmount": 15 }]; let articleno = "Gummimuffe" let search = articles.filter(function(item){ return (item.matchcode.includes(articleno) || item.description.includes(articleno) || item.id.includes(articleno)) }) console.log(search)

這是一個示例示例,您也可以將其應用到您的代碼中。

 let arr = JSON.parse('[{"value":"This is object insided array"}]'); console.log(arr)

你需要關閉你的[ with ]並且你有一個字符串,而不是一個對象數組。 您還可以使用JSON.parse() 這將完成這項工作:

let articles = [{
        "id": "35",
        "matchcode": "KM Anteile  S",
        "description": "KM Anteile  S ",
        "unit": "STK",
        "salesPrice": 0.7,
        "stock": "HL-F",
        "stockAmount": -3282
    },
    {
        "id": "41",
        "matchcode": "Arbeitszeit",
        "description": "Arbeitszeit ",
        "unit": "STD",
        "salesPrice": 76.8,
        "stock": "HL-F",
        "stockAmount": 0.75
    }, {
        "id": "502019",
        "matchcode": "Gummimuffe 100 mm",
        "description": "Gummimuffe 100 mm ",
        "unit": "STK",
        "salesPrice": 9.8,
        "stock": "HL-F",
        "stockAmount": 15
    }
];

另一件事是.filter()返回一個新數組,同時保持原始數組不變。

因為articles是一個字符串,你需要使用JSON.parse()來解析它,


注意:正如@Dai 在這個問題的評論中提到的, includes()區分大小寫,因此您可能希望使用另一種方法來進行友好搜索(不區分大小寫)

我選擇使用new RegExp()而不是includes()我使用match()

 const articles = `[ { "id": "35", "matchcode": "KM Anteile S", "description": "KM Anteile S ", "unit": "STK", "salesPrice": 0.7, "stock": "HL-F", "stockAmount": -3282 }, { "id": "41", "matchcode": "Arbeitszeit", "description": "Arbeitszeit ", "unit": "STD", "salesPrice": 76.8, "stock": "HL-F", "stockAmount": 0.75 }, { "id": "502019", "matchcode": "Gummimuffe 100 mm", "description": "Gummimuffe 100 mm ", "unit": "STK", "salesPrice": 9.8, "stock": "HL-F", "stockAmount": 15 }] `; const articlenenoFilter = "arbeitsze" const articleneno = new RegExp(articlenenoFilter, "i") const search = JSON.parse(articles).filter((item) => (item.matchcode.match(articleneno) || item.description.match(articleneno) || item.id.match(articleneno))) console.log(search)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM