假设我正在提供一个看起来像这样的json对象:
{"someList": [{"id": "21154859" },{"id": "21154865" },{"id": "21154856" },{"id": "21154870" }]}
我想找出当前'someList'项目的索引号是什么。 我有someList项id,它由var辅助和等于:21154856。
表示我创建了一个像这样的函数:
$.getJSON( url, function( data ) {
var jsonLength = data.someList.length;
for ( i=1; i <= jsonLength; i++ ){
chx = data.someList[i].id;
if(chx === aid){
var currentidno = Number(i) + 1;
$('#page').html('').append(currentidno + ' of ' + jsonLength);
break;
}
}
});
当我设置它时它工作正常并给我一个这样的结果: 3/4
但感觉效率低下,我想知道如果有成千上万的可能性它会如何表现。有人可以权衡这是否是实现我想做的最佳方式,并验证或否认这是完成任务的好方法的假设?
答案 0 :(得分:2)
你可以试试这个:
jQuery(someList).index({"id": "21154859" });
其中someList是JSON数组。
答案 1 :(得分:0)
没有。循环只是要走的路。但是,如果您需要经常在许多元素上进行搜索,那么构建索引可能会有效(或者如果没有其他属性,只需一次将JSON作为数组传递):
var indexArray = data.someList.map(function(o){return o.id;});
var currentidno = indexArray.indexOf(aid) + 1;
或者您可以通过对象属性而不是数组进行索引:
someValues = {"21154859":{index:0},"21154865":{index:1},"21154856":{index:2},"21154870":{index:3},... };
// no order needed!
var currentidno = someValues[aid].index + 1;