javascript - 使用 lodash 进行无限深度搜索

标签 javascript lodash

我有一个动态对象数组,其中有无限嵌套的 items 数组,如下所示:

var items = [{
  id: '7172hsdr',
  item: {},
  items: []
},
{
  id: '5343rtas',
  item: {},
  items: [{
    id: '4545nrhk',
    item: [],
    items: [{
      id: 'kbkb1212',
      item: [],
      items: []
    }]
  }]
}]

我想在此集合中搜索并找到 ID 为 kbkb1212 的对象。我更喜欢用 lodash 来做。

问题是有时我会寻找 ID 为 7172hsdr 的对象,有时我需要例如 kbkb1212

我做了什么

我使用了以下搜索第一级的功能。

var item = _.find(items, { id: '7172hsdr' });

它工作正常,但如果我需要 kbkb1212,它就不需要。

最佳答案

在纯 Javascript 中,您可以使用交互和递归方法在嵌套数据结构中查找项目。

function find(array, id) {
    var object;

    array.some(function f(a) {
        if (a.id === id) {
            object = a;
            return true;
        }
        if (Array.isArray(a.items)) {
            return a.items.some(f);
        }
    });
    return object;
}

var items = [{ id: '7172hsdr', item: {}, items: [] }, { id: '5343rtas', item: {}, items: [{ id: '4545nrhk', item: [], items: [{ id: 'kbkb1212', item: [], items: [] }] }] }];

console.log(find(items, '7172hsdr'));
console.log(find(items, 'kbkb1212'));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用 lodash 进行无限深度搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42175580/

相关文章:

javascript - 高效调用着色器颜色

javascript - 专业的前端开发人员使用任何 UI 软件还是只在文本编辑器中编写代码?

javascript - 如果主体宽度最大为 500px,我想添加一个按钮

javascript - 尝试返回键值与这些值匹配的所有对象

javascript - 从哪里获得单个 lodash 包的@types?

javascript - 如何格式化 JSON 对象数组 (Javascript)

javascript - Jquery UI - 自动完成自定义错误

javascript - 如何提交带有表单的<li>?

javascript - lodash 将交替插入数组

javascript - 如何将对象数组转换为嵌套数组组