import { Meta } from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/vi/functional-basic/Functions/getObjectNoUndefined - Loại bỏ các thuộc tính có giá trị ngoại lệ'/>

# `getObjectNoUndefined`

Tạo và trả về một đối tượng mới bao gồm các thuộc tính từ đối tượng hoặc mảng gốc có giá trị **không bằng** giá trị ngoại lệ (so sánh nghiệm ngặt tuyệt đối). Theo mặc định, giá trị ngoại lệ là `undefined`.

Hàm này thường được dùng để dọn dẹp dữ liệu trước khi gửi tới máy chủ hoặc để chuẩn hóa các đối tượng. Khi bạn truyền vào một mảng, các chỉ số của mảng sẽ được chuyển dạng thành khóa (key) kiểu chuỗi trong kết quả trả về.

**Tham số:**
- `data: T` — Đối tượng hoặc mảng nguồn (nơi `T extends Record<string | number, any>`).
- `exception: any` — Giá trị sẽ khiến thuộc tính mang nó bị loại bỏ. Mặc định là `undefined`.

**Trả về:**
`T` — Một đối tượng mới đã được dọn dẹp các thuộc tính chứa giá trị đã bị loại trừ.

```typescript
import { getObjectNoUndefined } from '@dxtmisha/functional-basic'

const user = {
  name: 'John',
  age: 25,
  description: undefined, // Sẽ tự động bị xóa (mặc định)
  status: 'guest'
}

console.log(getObjectNoUndefined(user)) 
// { name: 'John', age: 25, status: 'guest' }

// Xóa tất cả các thuộc tính có giá trị bằng 'guest'
console.log(getObjectNoUndefined(user, 'guest'))
// { name: 'John', age: 25, description: undefined }
```
