Javascript 连接对象和键值并获取长度
下面是我试图访问密钥并获取长度的示例数据,“XXXXXX 20160929”密钥是动态的: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"
"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”值……我如何得到它?我更新了演示以打印子键和值