| 123456789101112131415161718192021 |
- export function extractReadingWords(value: unknown): string[] {
- let parsed = value;
- for (let depth = 0; depth < 2 && typeof parsed === 'string'; depth += 1) {
- try { parsed = JSON.parse(parsed) as unknown; }
- catch { return []; }
- }
- const entries = Array.isArray(parsed)
- ? parsed
- : parsed && typeof parsed === 'object' ? Object.values(parsed) : [];
- return entries
- .map((entry) => {
- if (typeof entry === 'string') return entry.trim();
- if (!entry || typeof entry !== 'object') return '';
- const item = entry as Record<string, unknown>;
- const detailValue = Array.isArray(item['detail']) ? item['detail'][0] : item['detail'];
- const detail = detailValue && typeof detailValue === 'object' ? detailValue as Record<string, unknown> : {};
- return String(item['Title'] ?? item['title'] ?? item['word'] ?? item['Word']
- ?? detail['Title'] ?? detail['title'] ?? detail['word'] ?? detail['Word'] ?? '').trim();
- })
- .filter(Boolean);
- }
|