Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 连接对象和键值并获取长度_Javascript_Jquery_Json - Fatal编程技术网

Javascript 连接对象和键值并获取长度

Javascript 连接对象和键值并获取长度,javascript,jquery,json,Javascript,Jquery,Json,下面是我试图访问密钥并获取长度的示例数据,“XXXXXX 20160929”密钥是动态的: "resultData": [{ "a": "124", "b": "0", "c": "0", "d": { "e": "6", "f": "en", "xxxxxx20160929": [{ "ID": "yyyyyyyy" }, { "ID"

下面是我试图访问密钥并获取长度的示例数据,“XXXXXX 20160929”密钥是动态的:

"resultData": [{
    "a": "124",
    "b": "0",
    "c": "0",
    "d": {
        "e": "6",
        "f": "en",
        "xxxxxx20160929": [{
            "ID": "yyyyyyyy"
        },
        {
            "ID": "fffff"
        }
     ]
    }
}]
以下是我尝试过的代码:

var m = 1;
var schedule = [];
// looping to get key value 'xxxxxx20160929' 
$.each(response.resultData['0'].d, function(key, value) {
    if (m == 3) {
        //got value 'xxxxxx20160929'   
        schedule.push(key);
        //trying to check the length of 'xxxx20160929'     
        console.log(response.resultData['0'].d.key.length);
    }
    m++;
});

我的预期输出是2,因为“XXXXXX 20160929”循环了2次。

要获取对象中的ob项目数,不能对数组使用“长度”,对于可以使用的对象

Object.keys(response.resultData['0'].d).长度

Object.keys(response.resultData['0'].d[key])长度

UDP:

刚刚收到你的问题:)

要访问动态对象键,请使用[]访问它们

d[key]

执行以下操作,您不必编写这么多代码

resultData[0].d[Object.keys(resultData[0].d)[2]].length

这假设可以在d对象中的固定位置找到感兴趣的动态关键点。这个很脆。如果有更好的方法来发送密钥信号(例如它总是以“xxxxxx”开头),那么我将更新

更新: 我将有趣键的测试改为一个字符串的测试,该字符串的每个注释都以8位数字结尾(可能是您的日期),示例键为NEWYORKBOMDEL20160929

var数据={
“结果数据”:[
{
“a”:“124”,
“b”:“0”,
“c”:“0”,
“d”:{
“e”:“6”,
“f”:“en”,
“XXXXXX 20160929”:[
{“ID”:“yyyyyyyy”},
{“ID”:“fffff”}
]
}
}
]
};
data.resultData.forEach(函数(项){
var\u key=Object
.钥匙(d项)
.filter(函数(x){return/\d{8}$/.test(x);})[0];
var _value=item.d[_key];
console.log(“键:”+\键);
log(“子项:”+_value.length);
_value.forEach(函数(子函数){
var_childKey=Object.keys(child)[0];
var_childValue=child[_childKey];
log(“Key:\”“+\u childKey+”\“Value:\”“+\u childValue+”\”);
});

});
如果要查找具有特定长度的密钥,可以执行以下操作:

$.each(response.resultData['0'].d, function(key, value) {
    if (key.length == 14) {
        schedule.push(key);
        console.log(key, value);
    }
    m++;
});

我很困惑。你能解释一下你得到的实际结果是什么吗?因为我看不出你是如何得到
2
。它要么是
1
3
,要么更多,这取决于你试图得到的数字是什么。那么
m==3
如何得到?你的json中fltSchedule键在哪里?请更新check@vlaz,epascarello:内部d键3的键有e,f,xxxxxx 20160929。因此,当循环m==3时,是xxxxxx 20160929。我想要动态的“xxxxxx 20160929”值和“xxxxxx 20160929”的长度。你能为上面的json提供小提琴链接吗?我已经尝试了类似这里的响应。结果数据['0'].d.keys(键).长度,未定义error@sivashanker刚刚用密码更新了我的答案example@sivashanker此外,在代码中使用点表示法中的“键”也行不通……请像这样使用“response.resultData['0'].d[key]'我想要'xxxxxx 20160929'长度(循环长度)并且“xxxxxx 20160929”是动态的。还希望动态键值“xxxxxx 20160929”@sivashanker使用d[key]而不是d。key@john:现在如何动态获取“ID”值我可以更新示例,但我需要知道如何确定该键何时是感兴趣的键。是以数字开头的键,还是以“xxxxxx”开头的键?作为一个查看数据的人,您如何知道哪个键是最有趣的?xxxxxx是city.DateOfTravely的组合,例如:NEWYORKBOMDEL20160929。@JOHN您的更新很好,现在我想要“ID”值……我如何得到它?我更新了演示以打印子键和值