[英]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.