我有一个 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.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,不幸的是……它也使用了循环。
注意:如果您想通过其值获取 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);
按复杂条件搜索时使用 Array.findIndex()