简体   繁体   English

如何使用 Javascript 在 JSON 中执行通配符键搜索?

[英]How to perform wildcard key search in JSON using Javascript?

How to perform key search in JSON?如何在 JSON 中执行关键字搜索? I want to get all matching string keys from the JSON, not the values.我想从 JSON 中获取所有匹配的字符串键,而不是值。

 let json = { "first": { "first_fullname": 'abc', "first_address": '1 street name', "first_phone": 123456 }, "second": { "second_fullname": 'xyz', "second_address": '2 street name', "second_phone": 987654 } } var prop1 = 'first_address' var prop2 = 'address' Object.keys(json).forEach((person) => { Object.keys(json[person]).forEach((attr) => { if (prop1 in json[person]) { console.log(prop1) } }) }); Object.keys(json).forEach((person) => { Object.keys(json[person]).forEach((attr) => { if (prop2 in json[person]) { console.log(prop2) } }) });

Expecting all key strings containing *address* , with use of wildcard.期望所有包含*address*的键字符串,并使用通配符。

first_address
second_address

I would write this as a function which takes the property and a wildcard flag, and then filter the keys of each person to find ones which match the property, using strict equality for no wildcard or String.includes for wildcards:我会将其写为 function ,它采用属性和通配符标志,然后过滤每个person的键以找到与该属性匹配的键,对无通配符使用严格相等或对通配符使用String.includes

 let json = { "first": { "first_fullname": 'abc', "first_address": '1 street name', "first_phone": 123456 }, "second": { "second_fullname": 'xyz', "second_address": '2 street name', "second_phone": 987654 } } var prop1 = 'first_address' var prop2 = 'address' const hasProp = (json, prop, wildcard) => Object.values(json).flatMap(person => Object.keys(person).filter(key => wildcard? key.includes(prop): key === prop) ) console.log(hasProp(json, prop1, false)) console.log(hasProp(json, prop2, true))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM