我试图通过关键字专门搜索JSON。我已经成功搜索了一个ID,在下面的代码中,它是"标记"。虽然,我想要做的是,在"标签的ID内搜索"但是通过关键字"折旧"。只有在JSON中用括号表示"贬值"将被选中。然后标题和uri将从中拉出并写入文档,就像我的代码中一样。
我如何使用当前代码进行关键字搜索?如果我的逻辑很难理解,请在评论中告诉我。在此先感谢:)
注意:这正是将使用数据的JSON格式。
这是我的代码:
<script type='text/javascript'>
window.onload=function(){
var data = {
"Feed": [
{
"categories":[
"Depreciated",
"Test"
],
"content":"",
"tags":[
"Depreciated",
"Test"
],
"title":"Visual Design",
"uri":"google.com"
},
{
"categories":[
"Depreciated"
],
"content":"",
"tags":[
"Depreciated"
],
"title":"Typography",
"uri":"google.com"
}
]
},
res = JSON.search( data, '//*[tags]' );
for (var i=0, str=''; i<res.length; i++) {
str += '<a href="' + res[i].uri + '">Link</a>' + res[i].title + '<br/>';
}
document.getElementById('output').innerHTML = str;
}
</script>
答案 0 :(得分:0)
没有必要为此使用jQuery。 Try something like this instead:
function getTitlesByTag(arr, tag) {
return arr.filter(function(item) {
return item.tags.includes(tag)
}).map(function(item) {
return return {
title: item.title,
uri: item.uri
}
})
}
Array.prototype.includes
没有IE支持,所以如果你担心,你可以像这样交换那个checkOf的支票:
function getTitlesByTag(arr, tag) {
return arr.filter(function(item) {
return item.tags.includes(tag)
}).map(function(item) {
return {
title: item.title,
uri: item.uri
}
})
}
答案 1 :(得分:0)
shadeymoses比我快,但基本上你只需要filter()
和map()
。
var data = {
"Feed": [{
"categories": [
"Depreciated",
"Test"
],
"content": "",
"tags": [
"Depreciated",
"Test"
],
"title": "Visual Design",
"uri": "google.com"
},
{
"categories": [
"Depreciated"
],
"content": "",
"tags": [
"Depreciated"
],
"title": "Typography",
"uri": "google.com"
}
]
};
let results = data.Feed.filter(el => el.tags.includes('Depreciated')).map(el => ({
uri: el.uri,
title: el.title
}));
console.log(results);