Array 值方法
Array 字段应写入数组。使用数组方法前,先把未知入参归一化。
赋值
const tagValues = Array.isArray(payload.input.tags) ? payload.input.tags : [];
await context.form.update({
recordId: 'record-id',
data: {
tags: tagValues,
},
});
可接受入参示例:
| 入参 | 归一化结果 |
|---|---|
['urgent', 'vip'] | ['urgent', 'vip'] |
'urgent,vip' | 写入前先 split |
null | 根据业务需要写入 [] 或 null |
常用方法
| 方法 | 用途 |
|---|---|
filter(callback) | 获取所有符合条件的项 |
find(callback) | 获取第一项符合条件的值 |
map(callback) | 转换每一项 |
some(callback) | 判断是否至少有一项符合条件 |
every(callback) | 判断是否每一项都符合条件 |
includes(value) | 判断是否包含某个标量值 |
reduce(callback, initial) | 汇总数组值 |
filter(callback)
获取所有符合条件的项。
const items = Array.isArray(payload.input.items) ? payload.input.items : [];
const validItems = items.filter(
(item): item is { sku: string; quantity: number } =>
Boolean(item) &&
typeof item === 'object' &&
!Array.isArray(item) &&
typeof (item as { sku?: unknown }).sku === 'string' &&
Number.isFinite(Number((item as { quantity?: unknown }).quantity))
);
find(callback)
获取第一项符合条件的值。
const firstLargeItem = validItems.find((item) => item.quantity > 10);
map(callback)
转换每一项。
const skuList = validItems.map((item) => item.sku);
some(callback)
判断是否至少有一项符合条件。
const hasLargeItem = validItems.some((item) => item.quantity > 10);
every(callback)
判断是否每一项都符合条件。
const allHaveSku = validItems.every((item) => item.sku.trim().length > 0);
includes(value)
判断数组是否包含某个标量值。
const tags = Array.isArray(record.data.tags)
? record.data.tags.map((item) => String(item))
: [];
const isVip = tags.includes('vip');
reduce(callback, initial)
汇总数组值。
const totalQuantity = validItems.reduce((sum, item) => sum + item.quantity, 0);
获取符合条件的值
const reviewerIds = Array.isArray(record.data.reviewers)
? record.data.reviewers.map((item) => String(item)).filter(Boolean)
: [];
const targetReviewerIds = reviewerIds.filter((memberId) =>
memberId.startsWith('member-')
);