正在搜索复杂的JSON数据以查找匹配的键值
Searching complex JSON data for matching key value
我很难理解这个问题。我搜索了一些类似问题的答案,但所有示例中的JSON数据都太简单了。我的更复杂。
我有一个数字数组,我正在循环遍历。对于每个循环,我需要将数字与JSON数据进行匹配,以找到匹配的条目,然后从该条目中获取特定的键值。
这是我的阵列的一个例子:
results = [377, 375, 373, 353, 355]
这是我的JSON数据示例:
{
"count": 10,
"posts": [
{
"title": "Title of Post",
"attachments": [
{
"id": 377,
"images": {
"full": {
"url": "http://example.com/images/foo.jpg",
"width": 800,
"height": 600
},
"thumbnail": {
"url": "http://example.com/images/foo_thumb.jpg",
"width": 150,
"height": 150
}
}
},
{
"id": 355,
"images": {
"full": {
"url": "http://example.com/images/bar.jpg",
"width": 800,
"height": 600
},
"thumbnail": {
"url": "http://example.com/images/bar_thumb.jpg",
"width": 150,
"height": 150
}
}
}
]
},
// 9 more posts...
]
}
对于results
中的每个数字,我需要将其与每个posts.attachments.id
进行匹配。因此,在这种情况下,377
和355
是匹配的。对于所有匹配的附件,我需要获取它的full
和thumbnail
URL。
正如我所说,我已经找到了可能的解决方案,但示例数据只有1-2个级别。我无法完全理解这种特定场景所需的循环。
var urls = [];
var att = posts.attachments;
for (var i = 0; i < results.length; i++) {
var id = results[i];
for (var j = 0; j < att.length; j++) {
if (att[j].id == id) {
urls.push({
id: id,
full: att[j].images.full.url,
thumbnail: att[j].images.thumbnail.url
});
break;
}
}
}
var urls = [];
results.forEach(function(result){
posts.forEach(function(post){
post.attachments.every(function(attachment){
if(result === attachment.id) {
urls.push({
id: attachment.id,
full: attachment.images.full.url,
thumbnail: attachment.images.thumbnail.url
});
return false;
}
return true;
});
});
});
这里有很多嵌套的foreach循环,您应该始终将其保持在最低限度,但归根结底,你的数据有多大,将来会有多大。
forEach
是一个本地javascript函数,imo使它比传统的循环更具可读性。every
方法允许您通过返回false来中断循环,这样您就不必遍历整个列表,除非在数组中的最后一个元素上匹配。
相关文章:
- JS在封装对象中查找键值对
- JavaScript:如何在最接近值的关联数组中查找键
- immutablejs:查找映射是否包含键值
- 如何通过在JavaScript对象中的多个键/值对中查找最小值来选择键/值配对
- 使用Javascript查找并更新嵌套JSON数组和对象中的所有键值
- 从Javascript中的JSON对象中查找键值
- Javascript查找匹配值的键,就像SQL中的查询一样
- 基于“多个值”在JS对象中查找“键”
- 从 JavaScript 对象中的键中查找最高值
- Javascript:遍历对象数组以查找键值对并将它们呈现在表中 td
- 查找映射值,其中键是数组中的字符串.为什么会这样
- 在 JSON 中查找键的值,而无需事先知道结构
- 根据该键内数组中的值查找键的值
- 如何在多个键的 javascript 对象列表中查找唯一值
- 查找键值的 JSON 路径
- Javascript/Jquery:在嵌套数组中查找具有键值对的第一个和最后一个数组的索引的最有效方法
- 基于javascript中的from和to这两个键,从两个对象数组中查找唯一值
- underline-js-findWhere查找只有键值的对象
- 使用正则表达式从javascript函数返回语句中查找键/值
- 在对象中查找键/值(列表理解?