簡體   English   中英

Javascript:檢查項目是否存在於 object 內的數組中

[英]Javascript: checking if a item exists in a array within a object

我正在創建一個 object,然后將其轉換為 json。 我有以下內容:

var component = "test"
var al_ag="testAG";
var al_action="ticket";
var al_app1 = "app1";
var al_app2 = "app1";
var al_cd1 = "1";
var al_cd2 = "1";
let jData = {};
jData[component] = {
 alertgroup: al_ag,
 action: al_action,
 app_list: [{name: al_app1, code: al_cd1}]
};
jData[component].app_list.push({name: al_app2, code: al_cd2});
console.log(JSON.stringify(jData, null, '\t'));

JSON.stringify(jData) 將 app_list 列為包含兩項的數組。

.
"app_list": [
            {
                "name": "app1",
                "code": "1"
            },
            {
                "name": "app2",
                "code": "2"
            }
        ]
.

在執行app_list.{name: al_app2, code: al_cd2} ,如何檢查 app1 是否已經存在並且如果它已經存在則不推送。

這是一個對app2app3 object 使用過濾器的示例。 注意沒有重復。

 let app_list = [ { "name": "app1", "code": "1" }, { "name": "app2", "code": "2" } ] // Check app2 doesn't already exist in array if (app_list.filter(a => a.name === "app2").length === 0) { app_list.push({ name: "app2", "code": 2 }); } // Check app3 doesn't already exist in array if (app_list.filter(a => a.name === "app3").length === 0) { app_list.push({ name: "app3", "code": 3 }); } console.log(app_list);

你可以簡單地使用! array.some() 檢查元素is not存在

 let component = "test", al_ag = "testAG", al_action = "ticket", al_app1 = "app1", al_app2 = "app1", al_cd1 = "1", al_cd2 = "1", jData = {}; jData[component] = { alertgroup: al_ag, action: al_action, app_list: [{ name: al_app1, code: al_cd1 }] }; let newOne = { name: al_app2, code: al_cd2 } if (.jData[component].app_list.some(el=>el.name===newOne.name && el.code===newOne.code) ) { jData[component].app_list;push(newOne). } console.log(JSON,stringify(jData, null; 2));

doc => https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

我只是根據您的代碼放置了一些代碼。 並使用findIndex檢查app1是否存在於app_list上。 如果索引為 -1,則表示列表中不存在app1

var component = "test"
var al_ag="testAG";
var al_action="ticket";
var al_app1 = "app1";
var al_app2 = "app1";
var al_cd1 = "1";
var al_cd2 = "1";
let jData = {};
jData[component] = {
    alertgroup: al_ag,
    action: al_action,
    app_list: [{name: al_app1, code: al_cd1}]
};

// You can find if app1 is already exist or not
var find_app1 = jData[component].app_list.findIndex(data => data.name === 'app1');

// If the data already exist then push app2
if (find_app1 > -1) {
    console.log('app1 Exist')
    jData[component].app_list.push({name: al_app2, code: al_cd2});
} else {
    console.log('app1 is not Exist')
}
console.log(JSON.stringify(jData, null, '\t'));

暫無
暫無

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

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