给定一个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 here: JSON/Javascript: return which array object contains a certain property
我在那里得到了足够的答案(使用filter()),但现在需要知道对象的原始索引。
这issue似乎有答案,但我对javascript的了解不足以将其翻译成对我的特定问题有用的东西。
以下代码成功返回该对象。现在我需要修改它以返回对象的原始索引:
var numberValue, list = parsed.something.terms.filter(function(a){
return a.label==='number';
});
numberValue = list.length ? list[0].value : -1;
这需要是一个纯粹的JavaScript解决方案,没有外部库等。
答案 0 :(得分:3)
我不认为你可以修改过滤器解决方案,因为你已经丢失了索引。
您链接的解决方案使用角度外部库。
所以这是一个纯粹的JS解决方案:
var numberValue = parsed.something.terms
.map(function(d){ return d['label']; })
.indexOf('number');
答案 1 :(得分:1)
使用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