JSON/Javascript:返回包含特定属性的数组对象的索引
给定如下所示的JSON对象:JSON/Javascript:返回包含特定属性的数组对象的索引,javascript,arrays,json,Javascript,Arrays,Json,给定如下所示的JSON对象: { "something": { "terms": [ { "span": [ 15, 16 ], "value": ":", "label": "separator" }, { "span": [ 16, 20 ], "valu
{
"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不知道你的意思。我只需要返回原始对象的索引。这是我在问题中提出的要求,并通过批准的答案实现。为了让这个问题变得更好,我需要做什么具体的事情吗?如果需要,很乐意这样做。