簡體   English   中英

如何檢查數組是否僅包含特定鍵的空字符串

[英]How to check if an array only contains empty strings for a specific key

我有一個數組,其中包含一個values ,其中有一個名為name的鍵。 例子:

[
    {
        "id": 277,
        "name": "Kleur",
        "order": null,
        "values": [
            {
                "id": 789,
                "name": "ivoor",
                "images": [],
                "order": null,
                "disabled": false
            },
            {
                "id": 793,
                "name": "wit",
                "images": [],
                "order": null,
                "disabled": false
            },
            {
                "id": 794,
                "name": "zwart",
                "images": [],
                "order": null,
                "disabled": false
            }
        ]
    },
    {
        "id": 278,
        "name": "Cup",
        "order": null,
        "values": [
            {
                "id": 790,
                "name": "",
                "images": [],
                "order": null,
                "disabled": false
            }
        ]
    },
    {
        "id": 279,
        "name": "Maat",
        "order": null,
        "values": [
            {
                "id": 791,
                "name": "ONE",
                "images": [],
                "order": null,
                "disabled": true
            }
        ]
    },
    {
        "id": 280,
        "name": "Prothesehoesje",
        "order": null,
        "values": [
            {
                "id": 792,
                "name": "",
                "images": [],
                "order": null,
                "disabled": true
            }
        ]
    }
]

如果值只包含一個空字符串作為name值,我會遍歷它並希望檢查每個循環。

以上期望的輸出應該是:

false
true
false
true

我的循環產生上述數組:

options.forEach(function (option) {
    
    const values = getAvailableValues(option, variants, selected, currentOption);

    values.forEach(function (value, index) {
        console.log(value, index);
    });

    console.log(values.every(name => name === ''));
    
}

如您所見,我嘗試了在網上找到的這部分: values.every(name => name === '')但是,正如您所見,這對每個數組都返回 false:

在此處輸入圖像描述

我還找到了some()方法來實現這一點,但這只會檢查整個數組是否有空字符串,而我只想檢查特定的鍵name

這個怎么做?

every為您提供數組的一項作為參數,您需要訪問其name屬性:

 console.log(values.every(v => v.name === ''));

映射所有條目。

檢查.some()值的名稱是否不是空字符串。

如果有名字,則返回 false,如果沒有,則通過反轉.some()的輸出返回 true。

.every()顯然可以通過顛倒邏輯來完成同樣的事情。

 const data = [ { "id": 277, "name": "Kleur", "order": null, "values": [ { "id": 789, "name": "ivoor", "images": [], "order": null, "disabled": false }, { "id": 793, "name": "wit", "images": [], "order": null, "disabled": false }, { "id": 794, "name": "zwart", "images": [], "order": null, "disabled": false } ] }, { "id": 278, "name": "Cup", "order": null, "values": [ { "id": 790, "name": "", "images": [], "order": null, "disabled": false } ] }, { "id": 279, "name": "Maat", "order": null, "values": [ { "id": 791, "name": "ONE", "images": [], "order": null, "disabled": true } ] }, { "id": 280, "name": "Prothesehoesje", "order": null, "values": [ { "id": 792, "name": "", "images": [], "order": null, "disabled": true } ] } ]; // Map all the entries // Check if .some() of the values have a name that is not an empty string // Return false if there's a name, true if there is't by flipping the result of .some() const mapping = data.map(function( entry ) { return !entry.values.some( value => !!value.name ) }); console.log( mapping );

暫無
暫無

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

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