Javascript/JSON对象数组搜索问题
我试图搜索结果(从soapapi调用中得到的结果),我认为这是一个Javascript对象数组,因为它不遵循JSON标准 以下是数据示例:Javascript/JSON对象数组搜索问题,javascript,arrays,json,search,Javascript,Arrays,Json,Search,我试图搜索结果(从soapapi调用中得到的结果),我认为这是一个Javascript对象数组,因为它不遵循JSON标准 以下是数据示例: [ { '$': { uuid: '{461F892D-07D8-4FCA-AF86-D5A9CBB080B8}' }, pattern: [ '*689XXXX' ], description: [ 'DHHS_62' ], routePartitionName: [ 'DHHS_62-PT' ] }, { '$': { uui
[ { '$': { uuid: '{461F892D-07D8-4FCA-AF86-D5A9CBB080B8}' },
pattern: [ '*689XXXX' ],
description: [ 'DHHS_62' ],
routePartitionName: [ 'DHHS_62-PT' ] },
{ '$': { uuid: '{84651C57-5E4C-4981-B859-38C8ECC56E3B}' },
pattern: [ '*745XXXX' ],
description: [ 'DHHS_43' ],
routePartitionName: [ 'DHHS_43-PT' ] },
{ '$': { uuid: '{BC3259C4-38DB-4AD6-8594-61B938E4542C}' },
pattern: [ '*753XXXX' ],
description: [ 'DEQ_50' ],
routePartitionName: [ 'DEQ_50-PT' ] },
{ '$': { uuid: '{4CF32D54-BED2-4167-A5E8-E0206520218A}' },
pattern: [ '*7XXXXXXX' ],
description: [ 'DNR_21' ],
routePartitionName: [ 'DNR_21-PT' ] } ]
我曾尝试使用NPM模块,但都不起作用。我相信我查询数据时不是做错了什么,就是有脏数据需要清理
谁能证实:
我想我在这件事上有点不知所措,似乎找不到回去的路了。我感谢任何帮助或建议!提供的javascript是有效的。下面是一个过滤函数,它遍历整个对象并返回一组为给定routeParameterName找到的模式 测试数据
const obj = [{
'$': {
uuid: '{461F892D-07D8-4FCA-AF86-D5A9CBB080B8}'
},
pattern: ['*689XXXX'],
description: ['DHHS_62'],
routePartitionName: ['DHHS_62-PT']
},
{
'$': {
uuid: '{84651C57-5E4C-4981-B859-38C8ECC56E3B}'
},
pattern: ['*745XXXX'],
description: ['DHHS_43'],
routePartitionName: ['DHHS_43-PT']
},
{
'$': {
uuid: '{BC3259C4-38DB-4AD6-8594-61B938E4542C}'
},
pattern: ['*753XXXX'],
description: ['DEQ_50'],
routePartitionName: ['DEQ_50-PT']
},
{
'$': {
uuid: '{4CF32D54-BED2-4167-A5E8-E0206520218A}'
},
pattern: ['*7XXXXXXX'],
description: ['DNR_21'],
routePartitionName: ['DNR_21-PT']
},
{
'$': {
uuid: '{4CF32D54-BED2-4167-A5E8-E0206520218A}'
},
pattern: ['*6XXXXXX'],
description: ['DNR_21'],
routePartitionName: ['DNR_21-PT']
}
];
作用
function filter(data, key) {
var patterns = [];
for (var i = 0; i < data.length; i++) {
var routePartitionNames = data[i].routePartitionName;
var currentPatterns = data[i].pattern;
if (!Array.isArray(routePartitionNames) ||
routePartitionNames.length === 0 ||
routePartitionNames.indexOf(key) < 0
) {
continue;
}
// key found in current routePartitionName
for (var j = 0; j < currentPatterns.length; j++) {
var currentPattern = currentPatterns[j];
if (patterns.indexOf(currentPattern) < 0) {
patterns.push(currentPattern);
}
}
}
return patterns;
}
功能过滤器(数据、键){
var模式=[];
对于(变量i=0;i
用法:filter(数据,'DNR\u 21-PT')
返回:[“*7XXXXXXX”、“*6XXXXXX”]
您可以使用它根据routePartitionName
过滤对象,然后将其传递给a以获得所需的模式。可能有更好的方法,这只是快速而肮脏
const obj=[{'$':{uuid:'{461F892D-07D8-4FCA-AF86-D5A9CBB080B8}},
图案:['*689XXXX'],
说明:['DHHS_62'],
routePartitionName:['DHHS_62-PT']},
{'$':{uuid:{84651C57-5E4C-4981-B859-38C8ECC56E3B}},
图案:['*745xxx'],
说明:['DHHS_43'],
routePartitionName:['DHHS_43-PT']},
{'$':{uuid:{BC3259C4-38DB-4AD6-8594-61B938E4542C}},
图案:['*753xxx'],
说明:['DEQ_50'],
routePartitionName:['DEQ_50-PT']},
{'$':{uuid:{4CF32D54-BED2-4167-A5E8-E0206520218A},
图案:['*7XXXXXXX'],
说明:['DNR_21'],
routePartitionName:['DNR_21-PT']}]
让obj2=obj.filter(item=>item.routePartitionName=='DHHS_62-PT').map(id=>id.pattern);
console.log(obj2)
它不遵循什么标准它是一个JSON数组。你可以添加一个,你的一个尝试访问数组,这样有人可以改进它。它是一种脏数据,你可以更改模式,描述,路由分区名
可以更改为字符串。如果你可以清理数据格式,那么你可以得到一个clear对于查询的想法。你反对用循环来迭代数组以查找该值吗?谢谢大家的帮助!Nikolaus,我的理解是,它最初是XML,已经被转换为JS数组。我只是二手数据。Gamsh,那么你是说条目应该是这样的?{pattern:'9.19005554444',description:'Sample Outbound Call Block',routePartitionName:'Blocked'}Matt,不,一点也不反对。以下是我使用数组查询的尝试:以及我使用json查询的尝试:谢谢你的帮助!我喜欢你的函数。我有另一个数据集,我在上面运行它会返回多个结果。keymotoe提供的脚本会返回这些多个结果。这一个只返回1个结果。有没有如何返回多个?非常感谢。但是,我尝试了代码,它仍然只返回了一个结果。我也复制并粘贴了您的更新代码。有什么想法吗?可能我误解了您的问题。是否存在多个具有相同routePartitionName的对象?是否要返回所有模式对于所有对象在哪里设置了特定的routePartitionName?如果我不清楚,很抱歉。我的不好。确实,是的,有多个对象具有相同的routePartitionName。另外,是的,返回设置了特定routePartitionName的所有对象的所有模式。非常感谢!我非常感谢!@AndrewPetersen如果这个答案解决了您的问题,请继续单击复选标记表示接受。这可以让其他用户在继续搜索时知道问题的答案。