---
name: "toFixed"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---

## toFixed

> [VERSION] @ray-js/panel-sdk >= 1.0.0

> 💡 如果原始字符串长度大于 count，会从右侧截取最后 count 位。与 toFilled 不同，该函数始终返回固定长度的字符串。

### 描述

获取指定长度字符串，不足时前补零，超出时从右侧截取

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `str` | `string \| number` | 是 | 需要填充的字符串或数字 |
| `count` | `number` | 是 | 返回字符串的固定长度 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { toFixed } = utils;

toFixed('111', 5);    // '00111'
toFixed('3456111', 5); // '56111'
toFixed(42, 4);        // '0042'
```


---
name: "toFilled"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---
## toFilled

> [VERSION] @ray-js/panel-sdk >= 1.0.0

> 💡 与 toFixed 不同，当原始字符串长度已经大于等于 count 时，不会截断。

### 描述

将字符串用前导零填充到指定最小长度

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `str` | `string` | 是 | 需要填充的字符串 |
| `count` | `number` | 是 | 返回字符串的最小长度 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { toFilled } = utils;

toFilled('111', 5);     // '00111'
toFilled('3456111', 5); // '3456111'
```


---
name: "partition"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---
## partition

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将字符串按指定长度分割为子字符串数组

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `str` | `string` | 是 | 需要分割的原始字符串 |
| `chunk` | `number` | 是 | 每个子字符串的长度 |

### 返回值

类型: `string[]`

分割后的字符串数组，最后一个元素长度可能小于 chunk

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { partition } = utils;

partition('1234567', 3); // ['123', '456', '7']
partition('AABB', 2);    // ['AA', 'BB']
```


---
name: "get"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---
## get

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

根据路径字符串安全地获取嵌套对象的属性值（lodash.get 的轻量替代）

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `object` | `Record<string, any>` | 是 | 要查询的源对象 |
| `pathString` | `string` | 是 | 属性路径，使用点号分隔，如 'a.b.c' |
| `defaultValue` | `string \| number \| false \| true \| Record<string, any>` | 否 | 当路径解析结果为 undefined 时返回的默认值 |

### 返回值

类型: `string \| number \| false \| true \| Record<string, any>`

路径对应的属性值，若未找到则返回 defaultValue

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { get } = utils;

const obj = { a: { b: { c: 42 } } };
get(obj, 'a.b.c');          // 42
get(obj, 'a.b.x', 'N/A');  // 'N/A'
get(obj, 'a.b.c.d');       // undefined
```


---
name: "pick"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---
## pick

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

从对象中选取指定键的属性，返回新对象（lodash.pick 的轻量替代）

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `object` | `Record<string, unknown>` | 是 | 源对象 |
| `keys` | `string[]` | 是 | 需要选取的属性键名数组 |

### 返回值

类型: `Record<string, unknown>`

仅包含指定键的新对象

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { pick } = utils;

const obj = { a: 1, b: 2, c: 3 };
pick(obj, ['a', 'c']); // { a: 1, c: 3 }
pick(obj, ['d']);       // {}
```


---
name: "omit"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---
## omit

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

从对象中排除指定键的属性，返回新对象（lodash.omit 的轻量替代）

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `object` | `Record<string, unknown>` | 是 | 源对象 |
| `keys` | `string[]` | 是 | 需要排除的属性键名数组 |

### 返回值

类型: `Record<string, unknown>`

排除指定键后的新对象（浅拷贝）

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { omit } = utils;

const obj = { a: 1, b: 2, c: 3 };
omit(obj, ['b']);      // { a: 1, c: 3 }
omit(obj, ['a', 'c']); // { b: 2 }
```


---
name: "chunk"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---
## chunk

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将数组按指定大小分割为多个子数组（lodash.chunk 的轻量替代）

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `arr` | `any[]` | 是 | 需要分割的原始数组 |
| `chunkSize` | `number` | 否 | 每个子数组的大小，默认为 1 |
| `cache` | `any[]` | 否 | 内部递归用缓存数组，通常无需传入 |

### 返回值

类型: `any[]`

分割后的二维数组

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { chunk } = utils;

chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
chunk(['a', 'b', 'c'], 1); // [['a'], ['b'], ['c']]
```


---
name: "compareVersion"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "通用"
summary: "介绍字符串处理、对象属性获取、数组分组、版本比较及类型判断等通用基础工具方法。"
questions:
  - "partition函数如何将字符串按指定长度分割成数组？partition('1234567',3)结果是什么？"
  - "get函数如何安全地获取对象的深层属性值？与lodash.get有什么相似之处？"
  - "pick和omit函数分别如何从对象中选取或排除指定属性？"
  - "chunk函数如何将数组按指定大小分割成多个子数组？"
  - "compareVersion函数如何比较两个版本号的大小？返回值1、-1、0分别代表什么？"
  - "toFixed和toFilled函数在字符串超长时的处理逻辑有什么不同？"
  - "isObject、isArray等类型判断函数在面板开发中有哪些典型使用场景？"
  - "isNil函数判断的是null还是undefined？还是两者都包含？"
  - "get函数的defaultValue参数在属性路径不存在时如何生效？"
  - "如何从@ray-js/panel-sdk的utils中引入partition、get等通用工具函数？"
---
## compareVersion

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

比较两个语义化版本号字符串的大小

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `v1` | `string` | 是 | 第一个版本号字符串，如 '1.2.3' |
| `v2` | `string` | 是 | 第二个版本号字符串，如 '1.2.4' |

### 返回值

类型: `false \| 0 \| 1 \| -1`

1 表示 v1 大于 v2，-1 表示 v1 小于 v2，0 表示相等，false 表示参数无效

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { compareVersion } = utils;

compareVersion('1.2.3', '1.2.4'); // -1
compareVersion('2.0.0', '1.9.9'); // 1
compareVersion('1.0.0', '1.0.0'); // 0
compareVersion(null, '1.0.0');    // false
```
