这是在JavaScript中遍历数据结构的探索的延续。 请参阅here和here。
鉴于此Javascript对象:
var parsed = {
"terms": [
{
"span": [
12,
13
],
"value": "2",
"label": "number"
},
{
"span": [
13,
14
],
"value": "x",
"label": "multiply"
},
{
"span": [
14,
16
],
"value": "14",
"label": "number"
},
],
"span": [
12,
21
],
"weight": 0.85,
"value": "2x14 test"
};
我如何得到标签:number?
的术语索引数组在上面提到的上一个问题中,当能够知道只有一个这样的实例时,我能够解决导出某个标签的索引的概念。
parsed.terms.map(function(d){ return d['label']; }).indexOf('number');
现在我面临着多个实例的概念,就像上面的对象一样。上面的代码片段只会导出第一个的索引。
我可以通过循环遍历这些术语来构建一个数组,看看每个术语是否都有数字标签,但是理想的解决方案可能会扩展或修改上面的代码片段,也许不会使用循环。
答案 0 :(得分:4)
当您需要同时映射和过滤时,请使用reduce:
var indexes = parsed.terms.reduce(function(indexCollection, item, index) {
if(item.label === 'number') {
indexCollection.push(index);
}
return indexCollection;
}, []);