我有JSON字符串:如何获得JSON对象的指数
var Str="[{ 'label': 'Month'},{ label: 'within'},{ label: 'From'},
{ label: 'Where'},]";
我把它转换成JSON对象为:
var tagString = eval(Str);
我想获得一个月的指标,而不循环
有没有更好的方式来获取对象的索引而不使用循环?
在此先感谢!
我有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');
It's ES5和大多数现代浏览器都支持它。对于旧版浏览器,you need a polyfill不幸的是...也使用循环。
如果我使用var index = labels.indexOf('Month');它返回-1 –
@amol [Works here](http://jsfiddle.net/XCEtn/)。你一定错过了一些东西。 – Joseph
看到这个小提琴,为什么这给了-1 http://jsfiddle.net/amol_0504/G2JW7/ –
不要使用eval
解析json!使用JSON.parse
。 Array.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')
注意:如果你想通过它的价值得到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);
的代码段这不是JSON。但是你应该使用'JSON.parse'而不是'eval' ... – elclanrs
我不这么认为,用给定的数据结构你需要循环 –
如果我使用JSON.parse它会给出这样的JSON错误。解析:期望的属性名称或'}' –