簡體   English   中英

子數組是否包含某個值?

[英]Does subarray contain a certain value?

我有一個這樣的數組:

var = [
    {
        "a": "value",
        "b": "value2"
    },
    {
        "a": "value3",
        "b": "value4"
    }
    ...
]

我需要查找是否有任何子數組包含特定值。

我試過

var.flat().includes("value")

但由於某種原因總是返回 false 並且.flat()甚至沒有展平數組。

我也試過

var.includes("value")

沒有.flat()但只有在頂層包含它時才會返回。

我可以做

var = [
    "a": [
        "value",
        "value3"
        ...
    ],
    "b": [
        "value2",
        "value4"
        ...
    ]
]

但我寧願不這樣做,因為那需要我重寫一些我已經寫過的代碼。

首先使用flatMap將所有嵌套值提取到單個平面數組中:

 const objs = [ { "a": "value", "b": "value2" }, { "a": "value3", "b": "value4" } ]; const values = objs.flatMap(Object.values); console.log(values.includes("value"));

您可以迭代some (遇到第一個value時會立即停止循環),結合Object.values (從對象獲取值數組)和.includes (檢查數組是否有value ),

 const data = [ { a: "value", b: "value2", }, { a: "value3", b: "value4", }, ]; const valid = data.some((d) => Object.values(d).includes("value")); console.log(valid);

在您的代碼中, varr已經是扁平化的對象數組。 因為您想簽入 Object 個值。 使用varr.map(Object.values).flat()

 varr = [ { a: "value", b: "value2", }, { a: "value3", b: "value4", }, ]; console.log(varr.map(Object.values).flat().includes("value"));

暫無
暫無

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

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