我想要對 if 條件進行代碼優化,因為我必須使用 && 在 if 條件中添加更多鍵值對。所以我有一個物件陣列,如下所示。
let arr = [{
a:12,
b:14,
c:undefined,
d:undefined,
e:56,
f:"file 1",
g:"file 2",
h:undefined
}]
for(let key of arr){
if(key.a!==undefined && key.b!==undefined && key.c!==undefined && key.d!==undefined && key.e!==undefined && key.f!==undefined && key.g!==undefined){
console.log("code works")
}else{
console.log("fails")}
}
所以我必須添加多個鍵值來檢查未定義值的條件。我正在嘗試優化請幫助或任何建議。感謝您。
uj5u.com熱心網友回復:
您可以使用Object.values()andsome()來撰寫更短的代碼。這不是一個巨大的優化
let arr = [{
a:12,
b:14,
c:undefined,
d:undefined,
e:56,
f:"file 1",
g:"file 2",
h:undefined
}]
for(let key of arr){
if(Object.values(key).some((x) => x===undefined)){
console.log("fails")
}else{
console.log("code works")
}
}
uj5u.com熱心網友回復:
創建一個接受物件作為引數的函式,獲取它的values,然后用于some檢查是否有任何值是undefined。some找到條件的第一個匹配項后回傳。
const arr=[{a:12,b:14,c:undefined,d:undefined,e:56,f:'file 1',g:'file 2',h:undefined},{a:12,b:14,c:3,d:'bob from accounting',e:56,f:'file 1',g:'file 2',h:23},{a:12,b:14,c:3,d:'bob from accounting',e:56,f:'file 1',g:'file 2',h:undefined}];
function test(obj) {
const values = Object.values(obj);
return values.some(p => p === undefined);
}
const out = arr.map((obj, i) => {
return `Code ${test(arr[i]) ? 'fails' : 'works'}`;
});
console.log(out);
uj5u.com熱心網友回復:
如果我正確理解要求,您在物件中有動態屬性,并且您想檢查物件中的所有屬性是否具有值。如是,
試試這個:
let arr = [{
a:12,
b:14,
c:undefined,
d:undefined,
e:56,
f:"file 1",
g:"file 2",
h:undefined
}];
arr.forEach(obj => {
let str = '';
Object.keys(obj).forEach(key => {
str = obj[key] ? 'code works' : 'fails'
})
console.log(str);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/467358.html
標籤:javascript 节点.js 数组 表现 优化
