如何在javascript对象中进行模式匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在javascript对象中进行模式匹配相关的知识,希望对你有一定的参考价值。

我可以使用任何lodash方法在javascript中针对以下问题进行模式匹配吗?我有键= [x,y,z]和object = {x:'a',x0:'a0',y:'b',y0:'b1',y1:'c',k:'k' ,k1:'k1'..}

我需要以= {x:'a',x0:'a0',y:'b',y0:'b1',y1:'c'}获得结果]

基本上,我需要给出一个键数组和一个对象,它应该返回一个带有所有以键为子字符串的键的对象。

答案

不知道有什么lodash方法可以做到这一点,但并不复杂:

const keys = ['x', 'y', 'z'];
const obj = { x: 'a', x0: 'a0', y: 'b' ,y0:'b1', y1:'c' };
const matched = keys.reduce((acc, key) => {
  Object.entries(obj)
    .filter(([k]) => k.includes(key))
    .forEach(([k, v]) => (acc[k] = v));
  return acc;
}, {});
另一答案

不确定lodash,但您可以使用本机JavaScript相当简单地做到这一点:

const keys = [ 'x', 'y', 'z'];
const object = { x: 'a', x0: 'a0', y: 'b' ,y0:'b1', y1:'c', k:'k', k1:'k1'};

const validEntries = Object.entries(object).filter(([key, val]) => keys.some(k => key.includes(k)));
const result = Object.fromEntries(validEntries);
console.log(result);

以上是关于如何在javascript对象中进行模式匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Scala 中对对象进行模式匹配

如何使用 JavaScript / Node js 存储对象中不匹配的字符串

在 PL/SQL Developer Find & Replace 中使用正则表达式模式时,如何访问匹配的对象以进行替换?

JavaScript设计模式与开发实践 面向对象

JavaScript之基础-10 JavaScript 正则表达式(概述定义正则RegExp对象用于模式匹配的String方法)

JavaScript RegExp对象