Computer >> Máy Tính >  >> Lập trình >> Javascript

Lặp lại một đối tượng và xóa thuộc tính sai trong JavaScript

Giả sử, chúng ta có một đối tượng JSON như thế này -

const obj = {
   a: {
      someKey: {
         propOne: '',
         enabled: true
      }
   },
   b: {
      someKey: {
         propOne: '',
         enabled: false
      }
   },
   c: {
      someKey: {
         propOne: '',
         enabled: false
      }
   },
   someKey: {
      ab: {
         propOne: '',
         enabled: true
      }
   }
};

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một đối tượng như vậy và xóa tất cả các thuộc tính "đã bật" một cách đệ quy khỏi đối tượng có giá trị giả.

Ví dụ

Mã cho điều này sẽ là -

const obj = {
   a: {
      someKey: {
         propOne: '',
         enabled: true
      }
   },
   b: {
      someKey: {
         propOne: '',
         enabled: false
      }
   },
   c: {
      someKey: {
         propOne: '',
         enabled: false
      }
   },
   someKey: {
      ab: {
         propOne: '',
         enabled: true
      }
   }
};
const deleteFalsyKey = obj => {
   const keys = Object.keys(obj);
   keys.forEach(key => {
      if(obj[key].enabled === false){
         delete obj[key];
         return;
      };
      if(obj[key] && typeof obj[key] === 'object'){
         deleteFalsyKey(obj[key]);
         if (!Object.keys(obj[key]).length) {
            delete obj[key];
         };
      }
   });
};
deleteFalsyKey(obj);
console.log(obj);

Đầu ra

Đầu ra trong bảng điều khiển -

{
   a: { someKey: { propOne: '', enabled: true } },
   someKey: { ab: { propOne: '', enabled: true } }
}