Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript json到特定密钥的长度_Javascript_Json - Fatal编程技术网

Javascript json到特定密钥的长度

Javascript json到特定密钥的长度,javascript,json,Javascript,Json,假设这是我的变量,由.serializeArray()创建 所以这个的长度是=16 使用: 对象。键(a)。长度 假设我只想知道最长transtype1的长度,在这种情况下应该是8。我如何找到它 另一个例子: b={"acctType1":"individual","compare_act1":"contains","match_name_act1":"accountName","text_act1":"","acctType2":"individual","compare_act2":"con

假设这是我的变量,由.serializeArray()创建

所以这个的长度是=16

使用:

对象。键(a)。长度

假设我只想知道最长
transtype1
的长度,在这种情况下应该是8。我如何找到它

另一个例子:

b={"acctType1":"individual","compare_act1":"contains","match_name_act1":"accountName","text_act1":"","acctType2":"individual","compare_act2":"contains","match_name_act2":"accountName","text_act2":"","acctType3":"individual","compare_act3":"contains","match_name_act3":"accountName","text_act3":"","acctType4":"individual","compare_act4":"contains","match_name_act4":"accountName","text_act4":"","acctType5":"individual","compare_act5":"contains","match_name_act5":"accountName","text_act5":"","transType1":"401kContribution","compare_trans1":"contains","match_name_trans1":"description","text_trans1":"","transType2":"401kContribution","compare_trans2":"contains","match_name_trans2":"description","text_trans2":"","transType3":"401kContribution","compare_trans3":"contains","match_name_trans3":"description","text_trans3":""}
b的长度=32

但最长
transtype1
的长度是20


提前感谢

对象没有内在顺序,因此它们中的属性没有数字位置


您可以使用
进行in
循环和计数,直到找到您要查找的项目,但无法保证您得到的结果与源顺序、对象周围先前循环的顺序或任何其他内容一致。

正如@Quentin所说,您不能确定使用for in循环将为您提供对象中键的正确顺序,您可能应该以其他方式存储数据。如果您仍然想这样做,您可以这样做:

function lengthUpTo(obj,key){
    var count=0;
    for(var i in obj){
        if(i==key) return count;
        count++
    }
    return -1;
}
console.log(lengthUpTo(b,"transType1"))//20
console.log(lengthUpTo(b,"nonExistant"))//-1

我需要迭代这个对象,但想以不同的方式迭代acctType和transType,那么我该如何实现呢?使用数组,而不是重复末尾有不同数字的键名。
function lengthUpTo(obj,key){
    var count=0;
    for(var i in obj){
        if(i==key) return count;
        count++
    }
    return -1;
}
console.log(lengthUpTo(b,"transType1"))//20
console.log(lengthUpTo(b,"nonExistant"))//-1