Javascript 查找json元素的索引号

Javascript 查找json元素的索引号,javascript,json,Javascript,Json,假设为我提供了一个json对象,如下所示: {"someList": [{"id": "21154859" },{"id": "21154865" },{"id": "21154856" },{"id": "21154870" }]} 我想知道当前“someList”项目的索引号是多少。 我有someList项id,它由var aid表示,等于:21154856 我创建了这样一个函数: $.getJSON( url, function( data ) { var jsonLength = da

假设为我提供了一个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;
        }
        }
});
$.getJSON(url、函数(数据){
var jsonLength=data.someList.length;

对于(i=1;iNo)。循环只是一种方法。但是,如果您需要经常对许多元素进行搜索,那么构建索引(或者在没有其他属性的情况下,一次将JSON作为一个数字数组交付)可能是有效的:

或者,您可以使用按对象属性而不是数组进行索引:

someValues = {"21154859":{index:0},"21154865":{index:1},"21154856":{index:2},"21154870":{index:3},... }; 
// no order needed!
var currentidno = someValues[aid].index + 1;
您可以尝试以下方法:

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

其中someList是JSON数组。

您最好将JSON更改为一个简单的数字数组。这将是最有效的解析:
Array.indexOf
就足够了。非常好的建议。对于搜索此主题的任何人来说,向后推并以合理的格式获取js是非常有意义的就像这样。你要写的代码越少,网页要做的工作就越少。我使用了someValues={“21154859”:{index:0},“21154859”:{index:1}“Bergi我已经开始尝试用索引号显式地表示。但是我无法读取json文件,因为它没有验证。如果你取出json代码并在lint工具中进行检查,它会失败。我是否遗漏了什么?经过一番烦躁之后,我找到了正确的语法,我将离开这里,等待任何人发现这个问题。”未来。{“someList”:{“21154856”:{“索引”:2},“21154859”:{“索引”:0},“21154865”:{“索引”:1},“21154870”:{“索引”:3},“20515039”:{“索引”:4}不幸的是,长度值仍然需要循环。但是,获取总计的快速循环可能会被另一个使用总计填充的节点所取代。最后,尽管这个想法可行,但必须牺牲数组来实现此目的,因此必须为长度以及通过索引查找任何特定id想出一个循环。换句话说,如果您有id,很容易获得索引号,但是索引号没有任何意义,因为它不再是项目列表,因此没有someList[0];或someList[3]。将其保留为数组,并使用.length,并且能够将处理循环所需的第一个元素作为目标,以查找当前id。
jQuery(someList).index({"id": "21154859" });