查找 JSON 元素的索引号

find index number of json element

本文关键字:索引 元素 JSON 查找      更新时间:2023-09-26

假设我得到了一个看起来像这样的json对象:

{"someList": [{"id": "21154859" },{"id": "21154865" },{"id": "21154856" },{"id": "21154870" }]}

我想找出我所在的当前"someList"项目的索引号。我有 someList 项目 ID,它由 var aid 表示并等于 : 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

但是感觉效率低下,我想知道如果有数千种可能性,它会如何表现。 有人可以权衡这是否是实现我想做的事情的最佳方式,并验证或否认这是完成任务的好方法的假设吗?

你可以试试这个:

jQuery(someList).index({"id": "21154859" });

其中 someList 是 JSON 数组。

No.循环只是要走的路。但是,如果您需要经常对许多元素进行搜索,则构建索引可能会很有效(或者如果没有其他属性,则只是一次将 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;