簡體   English   中英

如何使用 Javascript 檢查數組是否包含兩個值

[英]How to check if an array contains two values with Javascript

我有一個 JSON object 有一個數組如下

{
  "objects": [
    {
      "severity": "LOW",
      "tags": [
        {
          "key": "account",
          "values": [
            "account2"
          ]
        },
        {
          "key": "accountId",
          "values": [
            "2"
          ]
        }
      ],
      "name": "object1"
    },
    {
      "severity": "HIGH",
      "tags": [
        {
          "key": "account",
          "values": [
            "account2"
          ]
        },
        {
          "key": "accountId",
          "values": [
            "2"
          ]
        }
      ],
      "name": "object2"
    },
    {
      "severity": "MEDIUM",
      "tags": [
        {
          "key": "account",
          "values": [
            "account44"
          ]
        },
        {
          "key": "accountId",
          "values": [
            "44"
          ]
        }
      ],
      "name": "object2"
    },
    {
      "severity": "HIGH",
      "tags": [
        {
          "key": "account",
          "values": [
            "account42"
          ]
        },
        {
          "key": "accountId",
          "values": [
            "42"
          ]
        }
      ],
      "name": "object2"
    }
  ]
}

我希望能夠使用 javascript 通過數組 go 並且如果嚴重性為 HIGH 並且 acccountID 匹配 2 例如設置警告。 即使帳戶 2 的嚴重性可能為 LOW,如圖所示,我仍然想讓 if 條件為真。

所以像if (objects.some(a =>(a.severity ==="LOW" &&......或任何更好的選擇。

您可以遍歷您的 object 並像這樣匹配您的屬性

 const data = { "objects": [ { "severity": "LOW", "tags": [ { "key": "account", "values": [ "account2" ] }, { "key": "accountId", "values": [ "2" ] } ], "name": "object1" }, { "severity": "HIGH", "tags": [ { "key": "account", "values": [ "account2" ] }, { "key": "accountId", "values": [ "2" ] } ], "name": "object2" }, { "severity": "MEDIUM", "tags": [ { "key": "account", "values": [ "account44" ] }, { "key": "accountId", "values": [ "44" ] } ], "name": "object2" }, { "severity": "HIGH", "tags": [ { "key": "account", "values": [ "account42" ] }, { "key": "accountId", "values": [ "42" ] } ], "name": "object2" } ] }; // Loop for(let i = 0; i < data.objects.length; i++) { // Set severity const severity = data.objects[i].severity; // Set ID let id; for(let ii = 0; ii < data.objects[i].tags.length; ii++) if(data.objects[i].tags[ii].key === 'accountId') id = data.objects[i].tags[ii].values[0]; // Do logic here if(severity === 'LOW' && id === '2') console.log(data.objects[i]); }

如果你是循環避免:

if (objects.some(e => e.severity === severity || e.tags.some(t => t.key === 'accountId' && t.values.includes(accountId)))) {
...

為清楚起見,該關閉是:

return e =>
    e.severity === severity ||
    e.tags.some(t =>
        t.key === 'accountId' &&
        t.values.includes(accountId));

例如

const j = { "objects": [ { "severity": "LOW", "tags": [ { "key": "account", "values": [ "account2" ] }, { "key": "accountId", "values": [ "2" ] } ], "name": "object1" }, { "severity": "HIGH", "tags": [ { "key": "account", "values": [ "account2" ] }, { "key": "accountId", "values": [ "2" ] } ], "name": "object2" }, { "severity": "MEDIUM", "tags": [ { "key": "account", "values": [ "account44" ] }, { "key": "accountId", "values": [ "44" ] } ], "name": "object2" }, { "severity": "HIGH", "tags": [ { "key": "account", "values": [ "account42" ] }, { "key": "accountId", "values": [ "42" ] } ], "name": "object2" } ] };
    
function condition(severity, accountId) {
    return e =>
        e.severity === severity ||
        e.tags.some(t =>
            t.key === 'accountId' &&
            t.values.includes(accountId));
}
    
if (j.objects.some(condition('LOW', '2'))) {
    console.log("warning: low || 2");
}

if (j.objects.some(condition('SUPER_HIGH', '4048'))) {
    console.log("warning: super high || 4048");
}

暫無
暫無

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

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