JSON/Javascript:返回包含特定属性的数组对象的索引

JSON/Javascript:返回包含特定属性的数组对象的索引,javascript,arrays,json,Javascript,Arrays,Json,给定如下所示的JSON对象: { "something": { "terms": [ { "span": [ 15, 16 ], "value": ":", "label": "separator" }, { "span": [ 16, 20 ], "valu

给定如下所示的JSON对象:

{
  "something": {
    "terms": [
      {
        "span": [
          15,
          16
        ],
        "value": ":",
        "label": "separator"
      },
      {
        "span": [
          16,
          20
        ],
        "value": "12.5",
        "label": "number"
      }
    ],
    "span": [
      15,
      20
    ],
    "weight": 0.005,
    "value": ":12.5"
  }
 }
我问了一个关于解析对象的问题,其中label:number在这里:

我得到了充分的答案(使用filter()),但现在需要知道对象的原始索引

这似乎有答案,但我对javascript了解不够,无法将其转换为对我的特定问题有用的东西

以下代码成功返回该对象。现在我需要修改它以返回对象的原始索引:

var numberValue, list = parsed.something.terms.filter(function(a){
  return a.label==='number';
});
numberValue = list.length ? list[0].value : -1;

这需要是一个纯javascript解决方案,没有外部库,等等。

我不认为您可以修改过滤器解决方案,因为在过滤器中您已经丢失了索引

链接到的解决方案使用角度外部库

下面是一个纯JS解决方案:

var numberValue = parsed.something.terms
    .map(function(d){ return d['label']; })
    .indexOf('number');


我认为您无法修改筛选器解决方案,因为在筛选器中您丢失了索引

链接到的解决方案使用角度外部库

下面是一个纯JS解决方案:

var numberValue = parsed.something.terms
    .map(function(d){ return d['label']; })
    .indexOf('number');


使用
forEach
并收集满足
a.label=='number'
谓词的对象索引:

var target = parsed.something.terms;
var list = [];
target.forEach(function(element, index){
    if (element.label==='number') {
        list.push(index)
    };
});
var numberValue = list.length ? target[list[0]].value : -1;

console.log(list); // [1]
console.log(numberValue); // 12.5

使用
forEach
并收集满足
a.label==“number”
谓词的对象索引:

var target = parsed.something.terms;
var list = [];
target.forEach(function(element, index){
    if (element.label==='number') {
        list.push(index)
    };
});
var numberValue = list.length ? target[list[0]].value : -1;

console.log(list); // [1]
console.log(numberValue); // 12.5

indexOf在IE8中不起作用,这可能有也可能没有什么大不了的。OP应该确保将这个函数添加到数组原型中。是的,我假设因为已经使用了过滤器,所以map/indexOf将是OK@frenchie,嗯,
也不会过滤。谢谢。不需要IE8兼容性。OPindexOf在IE8中不起作用,这可能不是什么大问题。OP应该确保将这个函数添加到数组原型中。是的,我假设因为已经使用了过滤器,所以map/indexOf将是OK@frenchie,嗯,
也不会过滤。谢谢。不需要IE8兼容性。你想要什么?你期望从答案中得到什么?请举个例子。@ZakariaAcharki不知道你的意思。我只需要返回原始对象的索引。这是我在问题中提出的要求,并通过批准的答案实现。为了让这个问题变得更好,我需要做什么具体的事情吗?如果需要的话,很乐意这样做。你想做什么?你期望从答案中得到什么?请举个例子。@ZakariaAcharki不知道你的意思。我只需要返回原始对象的索引。这是我在问题中提出的要求,并通过批准的答案实现。为了让这个问题变得更好,我需要做什么具体的事情吗?如果需要,很乐意这样做。