javascript - 查找数组的嵌套对象中是否存在键或值
问题描述
我有一组嵌套对象。
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;
谢谢。
解决方案
由于您使用的是简单对象,因此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;
}
此处的正则表达式匹配以“开头的每个条目,然后仅匹配不是”且后跟“的字符。
推荐阅读
- angular - Angular keycloak 试图在两个不同的 Angular 项目之间实现单点登录
- laravel - 防止在我的 laravel 项目中重复输入客户 ID 和借款人姓名的数据
- javascript - 从 Javascript 添加用户元数据
- c - gcc 错误消息包含不必要的字符
- python - 尝试使用 Cartopy 但出现此错误: URLError:
- regex - bash脚本仅替换匹配并启动特殊IP地址?
- amazon-s3 - 在 CloudFront + hls.js 上出现 CORS 错误
- json - teradata:JSON_TABLE 以切碎数字数组
- java - findViewById 在自定义视图中返回“null”
- python-3.x - 如何解决 kivy 应用程序在 Android 上启动时崩溃的问题?