我有一个JSON字符串如下:
var Str="[{ 'label': 'Month'},{ label: 'within'},{ label: 'From'},
{ label: 'Where'},]";
我通过eval将其转换为对象:
var tagString = eval(Str);
我希望不使用循环就能获取月份的索引。
有没有更好的方法在不使用循环的情况下获取数组中对象的索引?
提前感谢!
我有一个JSON字符串如下:
var Str="[{ 'label': 'Month'},{ label: 'within'},{ label: 'From'},
{ label: 'Where'},]";
我通过eval将其转换为对象:
var tagString = eval(Str);
我希望不使用循环就能获取月份的索引。
有没有更好的方法在不使用循环的情况下获取数组中对象的索引?
提前感谢!
不要使用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')
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,但不幸的是... 它也使用循环。
您可以使用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);
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.parse
,而不是eval
... - elclanrsfor
或while
的东西,就像我的答案一样。 - Eric