查找数组的嵌套对象中是不是存在键或值

Posted

技术标签:

【中文标题】查找数组的嵌套对象中是不是存在键或值【英文标题】:Find if key or value exist in the array's nested objects查找数组的嵌套对象中是否存在键或值 【发布时间】:2021-10-25 20:45:09 【问题描述】:

我有一个嵌套对象数组。

const data = [
  
    audi: 
      model_Q3: 'Q3',
      model_A3: 'A3'
    
  ,
  
    mercedes: 
      model_GLA: 'GLA',
      model_GLC: 'GLC'
    
  
];

如果嵌套对象的(audi、mercedes)键或值等于/包含参数,我希望函数返回 true。

function findCar(parameter) 
  let exists = false;
  data.forEach(cars => 
    Object.entries(cars).map(([_, carValues]) => 
        console.log(carValues)
    );
  ); 


findCar('model_Q3') //true;
findCar('model_') //true;
findCar('GLA') // true;
findCar('GL') // true;

谢谢。

【问题讨论】:

【参考方案1】:

由于您正在处理一个简单的对象,JSON.stringify 方法在这里应该非常方便。它构造了一个 json 字符串,其中包含整个对象,因此也包含您在对象中拥有的所有键和值。使用该字符串,您可以通过正则表达式匹配提取每个键或值。

这可能是这样的:

function findCar(parameter) 
    const keysAndValues = JSON.stringify(data).match(/"([^"]+)"/g);
    for (let entry of keysAndValues) if (entry.includes(parameter)) return true;
    return false;

这里的正则表达式匹配每个以 " 开头的条目,然后只匹配不是 " 且后跟 " 的字符。

【讨论】:

非常感谢。

以上是关于查找数组的嵌套对象中是不是存在键或值的主要内容,如果未能解决你的问题,请参考以下文章

js在数组中查找是不是存在某一个数值

js如何查找数组中是不是存在某个值

js如何查找数组中是不是存在某个值

js如何查找数组中是不是存在某个值

从嵌套数组对象中查找对象

38-python基础-python3-检查字典中是否存在键或值