[英]JS Filter Object that includes array
我試圖過濾一個包含數組的 JS object。 我想檢查id
、 matchcode
和description
。 那是我試過的是:
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.