Skip to content

deepFn

  • 嵌套结构数据处理方法

deepFind

在嵌套结构数据中深度查找满足条件的第一个元素, 如果没有找到则返回 undefined

示例

ts
import { deepFind } from 'mixte';

const data = [
  // 嵌套数据结构
  { id: 1 },
  {
    id: 2,
    children: [
      { id: 3 },
      { id: 4, children: [{ id: 5 }] },
    ],
    items: [
      { id: 6 },
      { id: 7, items: [{ id: 8 }] },
    ],
  },
  // 嵌套数组结构 ( 通过 `nestedArray` 选项启用 )
  [
    { id: 9 },
    [
      {
        id: 10,
        children: [{ id: 11 }],
        items: [{ id: 12 }],
      },
    ],
  ],
];

// 嵌套数据结构
deepFind(data, item => item.id === 5); // -> { id: 5 }
deepFind(data, 'children', item => item.id === 5); // -> { id: 5 }
deepFind(data, 'items', item => item.id === 8); // -> { id: 8 }
// 嵌套数组结构
deepFind(data, item => item.id === 9, { nestedArray: true }); // -> { id: 9 }
deepFind(data, 'children', item => item.id === 11, { nestedArray: true }); // -> { id: 11 }
deepFind(data, 'items', item => item.id === 12, { nestedArray: true }); // -> { id: 12 }

deepSome

在嵌套结构数据中深度检查是否存在满足条件的元素, 如果存在返回 true, 否则返回 false

示例

ts
import { deepSome } from 'mixte';

const data = [
  // 嵌套数据结构
  { id: 1 },
  {
    id: 2,
    children: [
      { id: 3 },
      { id: 4, children: [{ id: 5 }] },
    ],
    items: [
      { id: 6 },
      { id: 7, items: [{ id: 8 }] },
    ],
  },
  // 嵌套数组结构 ( 通过 `nestedArray` 选项启用 )
  [
    { id: 9 },
    [
      {
        id: 10,
        children: [{ id: 11 }],
        items: [{ id: 12 }],
      },
    ],
  ],
];

// 嵌套数据结构
deepSome(data, item => item.id === 5); // -> true
deepSome(data, 'children', item => item.id === 5); // -> true
deepSome(data, 'items', item => item.id === 8); // -> true
deepSome(data, item => item.id === 8); // -> false
// 嵌套数组结构
deepSome(data, item => item.id === 9, { nestedArray: true }); // -> true
deepSome(data, 'children', item => item.id === 11, { nestedArray: true }); // -> true
deepSome(data, 'items', item => item.id === 12, { nestedArray: true }); // -> true
deepSome(data, item => item.id === 12, { nestedArray: true }); // -> false

deepForEach

在嵌套结构数据中深度遍历所有元素,并为每个元素执行回调函数

示例

ts
import { deepForEach } from 'mixte';

const data = [
  // 嵌套数据结构
  { id: 1 },
  {
    id: 2,
    children: [
      { id: 3 },
      { id: 4, children: [{ id: 5 }] },
    ],
    items: [
      { id: 6 },
      { id: 7, items: [{ id: 8 }] },
    ],
  },
  // 嵌套数组结构 ( 通过 `nestedArray` 选项启用 )
  [
    { id: 9 },
    [
      {
        id: 10,
        children: [{ id: 11 }],
        items: [{ id: 12 }],
      },
    ],
  ],
];

// 嵌套数据结构
deepForEach(data, item => console.log(item.id)); // -> 1, 2, 3, 4, 5
deepForEach(data, 'children', item => console.log(item.id)); // -> 1, 2, 3, 4, 5
deepForEach(data, 'items', item => console.log(item.id)); // -> 1, 2, 6, 7, 8
// 嵌套数组结构
deepForEach(data, item => console.log(item.id), { nestedArray: true }); // -> 1, 2, 3, 4, 5, 9, 10, 11
deepForEach(data, 'children', item => console.log(item.id), { nestedArray: true }); // -> 1, 2, 3, 4, 5, 9, 10, 11
deepForEach(data, 'items', item => console.log(item.id), { nestedArray: true }); // -> 1, 2, 6, 7, 8, 9, 10, 12

Released under the MIT License.