[英]Javascript check and push dynamically elements in a new array
我有一個元素列表,如以下數據
[
{
"title": "First",
"catalogCategories": [ "sport", "economy" ]
},
{
"title": "Second",
"catalogCategories": [ "politics", "tourism" ]
},
{
"title": "Third",
"catalogCategories": [ "sport", "universe" ]
},
{
"title": "Fourth",
"catalogCategories": [ "economy", "politics" ]
}
]
我正在檢查列表中的每個元素是否存在catalogCategories
數組,如果存在,我將任何元素的類別推catalogData
數組中僅一次,因為碰巧任何元素的類別都可以相同,我正在過濾catalogData
數組catalogCategories
元素的所有類別
這是以下代碼
let categoryData = [];
let isCategory = false
for (let product of list) {
if (product.catalogCategories[0].length > 0) {
isCategory = true
let isFound = false
for (let i = 0; i < categoryData.length; i++) {
if (categoryData[i].value === product.catalogCategories[0] ||
categoryData[i].value === product.catalogCategories[1] ) {
isFound = true;
}
}
if (!isFound) {
categoryData.push({"name": "catalogCategories", "label": product.catalogCategories[0], "selected": false, "value": product.catalogCategories[0]})
}
}
我的問題在這里
if (!isFound) {
categoryData.push({"name": "catalogCategories", "label": product.catalogCategories[0], "selected": false, "value": product.catalogCategories[0]})
}
正如您所看到的,在所有這些檢查之后,我總是只推送catalogCategories
的第一個元素,我如何動態寫下我可以推送第一個和/或第二個元素?
"value": product.catalogCategories[0]
"label": product.catalogCategories[0]
您需要首先使用map
檢查整個catalogCategories
而不僅僅是第一個元素product.catalogCategories[0]
並使用new Map
來跟蹤不重復的類別。
const list = [ { "title": "First", "catalogCategories": [ "sport", "economy" ] }, { "title": "Second", "catalogCategories": [ "politics", "tourism" ] }, { "title": "Third", "catalogCategories": [ "sport", "universe" ] }, { "title": "Fourth", "catalogCategories": [ "economy", "politics" ] } ] let categoryDataMap = new Map(); for (let product of list) { if (product.catalogCategories.length > 0) { product.catalogCategories.map(catalog=>{ if(!categoryDataMap.has(catalog)){ categoryDataMap.set(catalog,{"name": "catalogCategories", "label": catalog, "selected": false, "value": catalog}) } }) } } const categoryData = Array.from(categoryDataMap.values()) console.log(categoryData)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.