node.js - lodash 检查 object.path 是否等于值

标签 node.js lodash

我有一个像...这样的对象

let object = {
    person: {
        pet: {
            name: "Rover"
        }
    }
};

我想使用 lodash (或任何与此相关的东西)来进行检查,例如...

Is the value at object.person.pet.name equal to "Spot"?

目前我能看到的唯一选择是从对象中获取宠物名称,然后检查它是否等于“Spot”。

是否有一个函数可以用来进行一次检查,例如......

_.equals(object, 'person.pet.name', "Spot");

如果它通过 lodash 存在或不存在,那就太好了。

我目前使用 lodash 的原因是我不知道人、宠物或名字是否真的存在,因此 lodash 为我提供了一种“安全”获取该数据的方法。

最佳答案

lodash中似乎不存在这样的方法。

无论如何,您可以使用 findKey 方法来查找符合给定要求的 key 。

_.findKey(object, { 'person.pet.name' : 'Spot' });

如果它返回未定义,则意味着它不相等。

<小时/>

请参阅documentation

var users = {
  'barney':  { 'age': 36, 'active': true },
  'fred':    { 'age': 40, 'active': false },
  'pebbles': { 'age': 1,  'active': true }
};

_.findKey(users, function(o) { return o.age < 40; });
// => 'barney' (iteration order is not guaranteed)

// The `_.matches` iteratee shorthand.
_.findKey(users, { 'age': 1, 'active': true });
// => 'pebbles'

// The `_.matchesProperty` iteratee shorthand.
_.findKey(users, ['active', false]);
// => 'fred'

// The `_.property` iteratee shorthand.
_.findKey(users, 'active');
// => 'barney'
<小时/> <小时/>

loadash自定义函数

const object = {
  person: {
    pet: {
      name: 'Rover',
    },
  },
};

function checkEquality(obj, key, value) {
  const val = key.split('.')
    .reduce((tmp, x) => (tmp !== void 0 && tmp[x] !== void 0 ? tmp[x] : void 0), obj);

  if (val === void 0) return false;

  return val === value;
}


console.log(checkEquality(object, 'person.pet.name', 'Rover'));
console.log(checkEquality(object, 'person.pet.name', 'RoverTT'));
console.log(checkEquality(object, 'person.petak.name', 'Rover'));

关于node.js - lodash 检查 object.path 是否等于值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833471/

相关文章:

node.js - 在 Gulp 文件中以编程方式获取 BrowserSync 外部 URL,以便我可以将其传递给外部 Node 脚本?

javascript - 如何制作一个 selectAll 复选框并触发 ng-click 每个复选框的每个功能?

javascript - 无法从 Angular Controller 读取 lodash 属性

node.js - 由于版本不可用,npm install 不起作用

javascript - 如何在浏览器中使用从 IcedCoffeeScript 生成的 JS 文件

javascript - 如何将嵌套对象移动到外部对象?

javascript - 如何从数组中排除某些键

javascript - 找出 JavaScript 对象数组中的差异和交集

node.js - 从 node.js 脚本禁用 sudo/root 权限

node.js - 尝试运行 Storybook 时,`No "导出 "main resolved ` 错误