Javascript 如何从JSON对象中提取多个hashtag?
我试图从下面的JSON对象中提取“动物”和“鱼”标签。我知道如何提取名为“animal”的第一个实例,但我不知道如何提取这两个实例。我想用一个循环,但不确定从哪里开始。请告知Javascript 如何从JSON对象中提取多个hashtag?,javascript,json,Javascript,Json,我试图从下面的JSON对象中提取“动物”和“鱼”标签。我知道如何提取名为“animal”的第一个实例,但我不知道如何提取这两个实例。我想用一个循环,但不确定从哪里开始。请告知 data = '{"hashtags":[{"text":"animal","indices":[5110,1521]}, {"text":"Fish","indices":[122,142]}],"symbols":[],"user_mentions": [{"screen_name":"
data = '{"hashtags":[{"text":"animal","indices":[5110,1521]},
{"text":"Fish","indices":[122,142]}],"symbols":[],"user_mentions":
[{"screen_name":"test241","name":"Test
Dude","id":4999095,"id_str":"489996095","indices":[30,1111]},
{"screen_name":"test","name":"test","id":11999991,
"id_str":"1999990", "indices":[11,11]}],"urls":[]}';
function showHashtag(data){
i = 0;
obj = JSON.parse(data);
console.log(obj.hashtags[i].text);
}
showHashtag(data);
使用:
let data={“hashtags”:[{“text”:“animal”,“index”:[51101521],{“text”:“Fish”,“index”:[122142],“symbols”:[],“user_提及”:[{“screen_name”:“test241”,“name”:“Test Dude”,“id”:499995,“id_str”:“489996095”,“index”:[301111],{“screen_name”:“Test”,“Test”,“id”:1199991”,“id_str”:“199990”,“index”:[11,11],“url[}';
函数showHashtag(数据){
返回JSON.parse(data).hashtags.filter(e=>/animal | fish/i.test(e.text))
}
log(showHashtag(数据))代码>对我来说,在这里非常有用,它在集合方面有不同的功能。对于您的情况,我将使用。
函数帮助检查数组,并获取任何带有作为第二个参数传入的creteria的标记,如下所示:
.find(集合,[predicate=.identity],[fromIndex=0])
源npm包
迭代集合的元素,返回第一个元素
谓词返回truthy for。谓词由三个参数调用
参数:(值、索引|键、集合)
就你的情况而言,这应该行得通
var data = '{ "hashtags": [ { "text": "animal", "indices": [ 5110, 1521 ] }, { "text": "Fish", "indices": [ 122, 142 ] } ], "symbols": [], "user_mentions": [ { "screen_name": "test241", "name": "Test \n Dude", "id": 4999095, "id_str": "489996095", "indices": [ 30, 1111 ] }, { "screen_name": "test", "name": "test", "id": 11999991, "id_str": "1999990", "indices": [ 11, 11 ] } ], "urls": [] }';
var obj = JSON.parse(data);
_.find(obj.hashtags, { 'text': 'animal' });
// => { "text": "animal", "indices": [ 5110, 1521 ] }
对于像这样的简单解析,我将使用普通的obj.forEach()
方法,它更可读,更容易理解,特别是对于javascript初学者
obj = JSON.parse(data).hashtags;
obj.forEach(function(element) {
console.log(element['text']);
});
filter
方法的简短解释可能很好,因为OP似乎对javascript不太熟悉。@baao感谢您的建议和回答,但我只想提取和打印文本,即[“动物”、“鱼”]。我可以用filter来做这个吗?添加了@jr134。但是为什么要搜索它呢?是否只希望对象具有text
属性@jr134@baao我在这里学到了很多,但我忘了提到的是,我有多个像这样的对象,它们有不同的hashtag,我不认为过滤器可以使用。对于我最初的解释,我深表歉意,因为我没有概述这一点。javascript中是否有.find
函数?哦,不,这是lodash库中的一个函数,它为操作对象、数组等提供了不同的空间,但仍然.find()
只返回第一个合适的匹配项。而OP希望返回多个元素,并进一步使用一个简单的obj.hashtags.find(elem=>elem.text==='animal')
提供与lodash解决方案相同的结果,并且不需要任何额外的第三方库…。
在这种情况下可以做得很好,不要弄错,这只是一种使代码更整洁的方法,而不必做所有这些@丹尼尔