我有一個物件,其鍵可以具有可以是物件、字串或陣列的值。
const obj = {
key1: 'asdf',
key2: {},
key3: ['a','b','c'],
key4: [],
key5: '',
}
我必須過濾所有空的鍵,即空物件、空陣列或空字串。
除了基于typeofof 鍵寫入條件然后檢查 null之外,還有其他方法嗎?
uj5u.com熱心網友回復:
對于空字串,簡單地將屬性與"". 可以使用Object.keys屬性長度與 0 的比較來比較空物件和空陣列。
const obj = {
key1: 'asdf',
key2: {},
key3: ['a','b','c'],
key4: [],
key5: '',
}
function filterObject(obj) {
for (var propName in obj) {
if (obj[propName] === "" || Object.keys(obj[propName]).length === 0) {
delete obj[propName];
}
}
return obj;
}
console.log(filterObject(obj));
uj5u.com熱心網友回復:
您可以使用Object.keys輕松實作結果并減少
僅當物件不為空時才使用keys物件回圈并設定新物件的屬性objObject.keys
您可以使用typeof運算子檢查值的型別
1) string :typeof將回傳string并檢查length財產
2) array : 您可以使用Array.isArray,boolean無論物件是否為陣列,它都會回傳值
3) object : 您可以首先使用所有鍵Object.keys,然后檢查該物件上是否存在任何屬性或不使用length屬性
由于,arrays都是object在JS中,所以你可以直接使用
(typeof value === "object" && Object.keys(value).length)
檢查它在哪里是一個物件以及它是否包含任何屬性
const obj = {
key1: "asdf",
key2: {},
key3: ["a", "b", "c"],
key4: [],
key5: "",
};
const result = Object.keys(obj).reduce((acc, key) => {
const value = obj[key];
if (
(typeof value === "string" && value !== "") ||
(typeof value === "object" && Object.keys(value).length)
)
acc[key] = value;
return acc;
}, {});
console.log(result);
uj5u.com熱心網友回復:
只需使用 Object.keys()
if (Object.keys(something).length) console.log("Not empty");
這適用于所有字串、陣列,當然還有物件。
您可以查看 Object.keys 檔案以獲取更多詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/342374.html
標籤:javascript 反应
