如何获取json对象的索引

我有json字符串:

var Str="[{ 'label': 'Month'},{ label: 'within'},{ label: 'From'}, { label: 'Where'},]"; 

我将它转换为json对象:

  var tagString = eval(Str); 

我想得到没有循环的月份索引

有没有更好的方法来获取对象的索引而不使用循环?

提前致谢!

如果这些都是标签,你可以改变这样的结构,所以它是“一系列标签”,在我看来,这将更合适。

 var Str = '["Month","within","From","Where"]'; 

然后用JSON.parse解析它们,或者因为你使用jQuery, $.parseJSON让它在更多浏览器上工作:

 var labels = JSON.parse(Str); 

labels现在应该是一个数组,您可以使用Array.indexOf

 var index = labels.indexOf('Month'); 

它是ES5 ,大多数现代浏览器都支持它。 对于较旧的浏览器, 您需要一个polyfill ,不幸的是…也使用循环。

不要用eval解析json! 使用JSON.parseArray.map是循环的一个很好的替代方法:

 var str = '[{ "label": "Month"}, { "label": "within"}, { "label": "From"}, { "label": "Where"}]'; var data = JSON.parse(str); var index = data.map(function(d) { return d['label']; }).indexOf('Month') 

的jsfiddle

注意:如果你想通过它的值获得JSON中的特定项目,我会遇到这个答案,并考虑分享它。

你可以使用Array.splice()

首先,@ elclanrs和@Eric提到使用JSON.parse();

 var Str = '[{ "label": "Month"}, { "label": "within"}, { "label": "From"}, { "label": "Where"}]'; var item = JSON.parse(Str); item = item.splice({label:"Month"},1); 

和它的ES5。

请在此处查看代码段代码

 var Str = '[{ "label": "Month"}, { "label": "within"}, { "label": "From"}, { "label": "Where"}]'; var item = JSON.parse(Str); item = item.splice({label:"Month"},1); console.log(item);