派生索引数组

时间:2015-08-20 13:30:44

标签: javascript arrays

这是在JavaScript中遍历数据结构的探索的延续。 请参阅herehere

鉴于此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');

现在我面临着多个实例的概念,就像上面的对象一样。上面的代码片段只会导出第一个的索引。

我可以通过循环遍历这些术语来构建一个数组,看看每个术语是否都有数字标签,但是理想的解决方案可能会扩展或修改上面的代码片段,也许不会使用循环。

1 个答案:

答案 0 :(得分:4)

当您需要同时映射和过滤时,请使用reduce

var indexes = parsed.terms.reduce(function(indexCollection, item, index) {
    if(item.label === 'number') {
        indexCollection.push(index);
    }

    return indexCollection;
}, []);