循環檢查?selinfo
?數組中的每一個對象,判斷其中的?po_qty
?和?price
?是否為空(null
、undefined
?或空字符串?""
),可以使用以下幾種方法:
方法1:使用?forEach
?循環檢查每一項
const selinfo = this.data.selinfo;selinfo.forEach((item, index) => {if (!item.po_qty || !item.price) {console.log(`第 ${index + 1} 項數據不完整:`, item);// 可以在這里處理不符合條件的數據}
});
判斷邏輯
-
!item.po_qty
?→ 檢查?po_qty
?是否為?null
、undefined
、0
?或?""
-
!item.price
?→ 檢查?price
?是否為?null
、undefined
、0
?或?""
如果你希望?嚴格判斷空值(僅?null
?或?undefined
),可以改成:
if (item.po_qty == null || item.price == null) {console.log(`第 ${index + 1} 項數據為空:`, item);
}
方法2:使用?some()
?檢查是否有任意一項為空
const hasEmptyData = selinfo.some(item => !item.po_qty || !item.price);if (hasEmptyData) {console.log("存在數據不完整的項");
} else {console.log("所有數據完整");
}
方法3:使用?filter()
?獲取所有不完整的數據
const incompleteItems = selinfo.filter(item => !item.po_qty || !item.price);if (incompleteItems.length > 0) {console.log("以下數據不完整:", incompleteItems);
} else {console.log("所有數據完整");
}
方法4:使用?map()
?返回檢查結果
const checkResults = selinfo.map(item => ({...item,isValid: item.po_qty != null && item.price != null,
}));console.log("檢查結果:", checkResults);
輸出示例:
[{ id: 1, po_qty: 10, price: 100, isValid: true },{ id: 2, po_qty: null, price: 50, isValid: false },{ id: 3, po_qty: 5, price: null, isValid: false }
]
嚴格判斷空值(排除?0
?和?""
)
如果?po_qty
?或?price
?可能是?0
?或空字符串?""
,但你仍然希望它們是有效值,可以這樣判斷:
const isInvalid = (value) => value === null || value === undefined;selinfo.forEach(item => {if (isInvalid(item.po_qty) || isInvalid(item.price)) {console.log("該項數據不合法:", item);}
});
擴展
?判斷數據項中某兩項的數據和另一項的數據比
判斷selinfo數組中,子項now_qty與reject_qty的和是否小于inv_qty
const isRowValid = selinfo.every(row =>(row.now_qty || 0) + (row.reject_qty || 0) <= (row.inv_qty || 0)
);
if (!isRowValid) {wx.showToast({title: '輸入數量請小于庫存量!',icon: 'none'});return;
}
總結
方法 | 適用場景 | 返回值 | 推薦度 |
---|---|---|---|
forEach | 遍歷并檢查每一項 | 無返回值,可執行操作 | ??推薦 |
some | 只想知道是否有空數據 | true ?/?false | ? |
filter | 獲取所有不完整的數據 | 數組 | ?? 適用于需要具體數據時 |
map | 返回檢查結果 | 新數組 | ?? 適用于需要標記數據時 |
推薦方案
-
如果只是檢查是否有空數據?→?
some()
-
如果需要獲取哪些數據為空?→?
filter()
-
如果需要遍歷并處理空數據?→?
forEach