以下是我尝试访问密钥并获取长度的示例数据,'xxxxxx20160929'密钥是动态的:
"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,因为'xxxxxx20160929'循环2次。
答案 0 :(得分:0)
要获取对象中的数字ob项,您不能使用" length"它用于数组,对于你可以使用的对象
Object.keys(response.resultData['0'].d).length
或
Object.keys(response.resultData['0'].d[key]).length
UDP:
刚收到你的问题:)
访问动态对象键使用[]访问它们
d[key]
答案 1 :(得分:0)
请遵循以下内容,您不必使用如此多的代码
resultData[0].d[Object.keys(resultData[0].d)[2]].length
答案 2 :(得分:0)
这假设可以在 d 对象中的固定位置找到感兴趣的动态键始终。这非常脆弱。如果有更好的方法来发出密钥信号(例如它始终以“xxxxxx”开头,那么我将更新。
<强>更新强> 我通过 NEWYORKBOMDEL20160929
的示例键,根据您的评论将有趣键的测试更改为一个以8位数字结尾的字符串(可能是您的日期)
var data = {
"resultData": [
{
"a": "124",
"b": "0",
"c": "0",
"d": {
"e": "6",
"f": "en",
"xxxxxx20160929": [
{"ID": "yyyyyyyy" },
{"ID": "fffff"}
]
}
}
]
};
data.resultData.forEach(function(item){
var _key = Object
.keys(item.d)
.filter(function(x){ return /\d{8}$/.test(x); })[0];
var _value = item.d[_key];
console.log("Key: " + _key);
console.log("Children: " + _value.length);
_value.forEach(function(child){
var _childKey = Object.keys(child)[0];
var _childValue = child[_childKey];
console.log(" Key: \"" + _childKey + "\" Value: \"" + _childValue + "\"");
});
});
答案 3 :(得分:0)
如果要查找具有特定长度的密钥,可以执行以下操作:
$.each(response.resultData['0'].d, function(key, value) {
if (key.length == 14) {
schedule.push(key);
console.log(key, value);
}
m++;
});