javascript - 递归查找对象上的键

标签 javascript

我有一个像这样结构的 JavaScript 对象;

brand: {
  group: {
    subGroup: {
       items: []
    },
    otherSub: {
       items: []
    }
  }
}

给定一个键数组 ['brand'、'group'、'newGroup'、'newSubGroup'],我想将键拆分为找到的键和丢失的键。所以对于上面的结构我应该返回;

present = ['brand', 'group']
missing = ['newGroup', 'newSubGroup']

我正在使用 ES6 并且有 lodash 可用,但正在努力寻找一种干净的方法来生成它。

这不仅仅是检查是否存在,而是递归地查找键并返回存在的键和剩余的键。

最佳答案

这是一种非常粗略的工作方式。

const find = (keys, obj) => {
  const string = JSON.stringify(obj);
  return keys.reduce(({ present, missing }, key) => {
    const match = string.match(new RegExp(`"${key}":`));
    if (match) {
      present.push(key);
    } else {
      missing.push(key);
    }
    return { present, missing };
  }, { present: [], missing: [] });
}

关于javascript - 递归查找对象上的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45197340/

相关文章:

javascript - 如何在javascript中使用拆分

javascript - 在 react 中将元素删除到状态列表

javascript - 如何使用javascript在phonegap中播放mp3文件

javascript - 不能对 D3 v4 中的对象使用 attr

javascript - 迭代对象时是否真的需要 obj.hasOwnProperty(key) 以兼容 IE?

javascript - 拖放到特定区域

javascript - 将 JavaScript 测试用例转换回测试构造函数

javascript - 从字符串输入执行JS代码

javascript - 如何将 JavaScript 日期初始化为特定时区

javascript - 什么时候可以使用 Javascript,什么时候不可以?