Javascript 按嵌套JSON中以特定字符串开头的值进行搜索
示例嵌套JSONJavascript 按嵌套JSON中以特定字符串开头的值进行搜索,javascript,json,object,Javascript,Json,Object,示例嵌套JSON { "a": "https://example1.com", "b": { "c":"https://example2.com", "d": { "e": "www.example3.com"
{
"a": "https://example1.com",
"b": {
"c":"https://example2.com",
"d": {
"e": "www.example3.com"
}
},
"f": {
"g":"https://example4.com"
}
}
}
要筛选仅以“http”开头的值。找不到嵌套json的任何示例
(可选)是否有方法在对象扫描npm中实现此目的
预期结果
['https://example1.com', 'https://example2.com', 'https://example4.com']
循环键,检查类型,根据需要重复:
function loopAndParse(thing, rtn) {
Object.keys(thing).forEach(k => {
if (typeof thing[k] === "string" && thing[k].indexOf("https://") > -1)
rtn.push(thing[k])
else if (typeof thing[k] === "object") return loopAndParse(thing[k], rtn)
})
return rtn;
}
console.log(loopAndParse(obj, []))
拨弄:循环键,检查类型,根据需要重复:
function loopAndParse(thing, rtn) {
Object.keys(thing).forEach(k => {
if (typeof thing[k] === "string" && thing[k].indexOf("https://") > -1)
rtn.push(thing[k])
else if (typeof thing[k] === "object") return loopAndParse(thing[k], rtn)
})
return rtn;
}
console.log(loopAndParse(obj, []))
Fiddle:递归提取值,平整数组,通过https
https过滤数组
const foo={
“a”:https://example1.com",
“b”:{
“c”:https://example2.com",
“d”:{
“e”:“www.example3.com”
}
},
“f”:{
“g”:”https://example4.com"
}
}
函数值(数据){
常量运行=数据=>{
返回Object.values(数据).map(值=>{
如果(值的类型==='object'){
返回值(值)
}否则{
返回值
}
})
}
返回运行(数据)。平坦(无限)
}
设a=extractValues(foo).filter(url=>/^https/.test(url))
log(a)
递归提取值,平整数组,通过httpshttps过滤数组
const foo={
“a”:https://example1.com",
“b”:{
“c”:https://example2.com",
“d”:{
“e”:“www.example3.com”
}
},
“f”:{
“g”:”https://example4.com"
}
}
函数值(数据){
常量运行=数据=>{
返回Object.values(数据).map(值=>{
如果(值的类型==='object'){
返回值(值)
}否则{
返回值
}
})
}
返回运行(数据)。平坦(无限)
}
设a=extractValues(foo).filter(url=>/^https/.test(url))
console.log(a)
以下是您将如何使用(如问题中所述)解决此问题
//const objectScan=require('object-scan');
常量数据={a:'https://example1.com,b:{c:'https://example2.com,d:{e:'www.example3.com'}},f:{g:'https://example4.com' } };
console.log(objectScan(['**']){
反面:错,
filterFn:({value})=>typeof value==='string'&&value.startsWith('http'),
rtn:'价值'
})(数据);
// => [ 'https://example1.com', 'https://example2.com', 'https://example4.com']
。作为控制台包装{最大高度:100%!重要;顶部:0}
以下是您将如何使用(如问题中所述)解决此问题
//const objectScan=require('object-scan');
常量数据={a:'https://example1.com,b:{c:'https://example2.com,d:{e:'www.example3.com'}},f:{g:'https://example4.com' } };
console.log(objectScan(['**']){
反面:错,
filterFn:({value})=>typeof value==='string'&&value.startsWith('http'),
rtn:'价值'
})(数据);
// => [ 'https://example1.com', 'https://example2.com', 'https://example4.com']
。作为控制台包装{最大高度:100%!重要;顶部:0}
循环键,检查类型的值,如果是字符串,解析开始,否则,循环内部对象。。。etcLoop键,检查类型的值,if字符串,parse start,else,循环内部对象。。。这个图书馆很棒。你能@vincent在你的github自述中详细说明这些例子吗?目前,这些有用的例子分散在stackoverflow上。好主意。自述文件中有很多例子,但我也应该包括更多涉及的例子。这个库很棒。你能@vincent在你的github自述中详细说明这些例子吗?目前,这些有用的例子分散在stackoverflow上。好主意。自述文件中有很多例子,但我也应该包括更多涉及的例子。