[英]Check if a value exists in an object array without for loop
"Roles":
{
"0_A":["Developer"],
"0_B":["Developer"],
"0_C":["Developer","Tester","Player"],
"0_D":["Tester"]
}
有沒有辦法檢查'Roles'對象中任何地方是否存在'Player'/'Tester'/'Developer'值? 這是我嘗試的:
let isPlayer= false;
if (response) {
const k = Object.keys(response["Roles"]);
for (let index = 0; index < k.length; index++) {
if (response["Roles"][k[index]].indexOf("Player") > -1) {
isPlayer= true;
break;
}
}
}
有沒有辦法做到這一點而無需for循環?
謝謝!
一種替代方法是在輸入對象的Object.Values() 上將 Array.some()與Array.includes()結合使用。 以下代碼段顯示了如何執行此操作的示例:
const response = {}; response["Roles"] = { "0_A":["Developer"], "0_B":["Developer"], "0_C":["Developer","Tester","Player"], "0_D":["Tester"] }; const checkForType = (resp, type) => { let typeExists = false; if (resp) { let roles = resp["Roles"] || {}; typeExists = Object.values(roles).some(arr => arr.includes(type)); } return typeExists; } console.log(checkForType(response, "Player")); console.log(checkForType(response, "Developer")); console.log(checkForType(response, "Team Leader"));
.as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;}
您可以展平 Object.values()
返回的2D數組,並使用includes
檢查該數組是否包含角色名稱:
const response = { "Roles": { "0_A": ["Developer"], "0_B": ["Developer"], "0_C": ["Developer", "Tester", "Player"], "0_D": ["Tester"] } } let isPlayer = Object.values(response.Roles) .flat() .includes("Player") console.log(isPlayer)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.