我已经阅读了许多很棒的代码示例,这些示例测试了带有数组的对象中对象键的存在。这些很棒...
我的问题是返回的JSON具有必须用于获取数组内项目的键值。这是一个例子。查看“订单”:
{"Routes": [
{
"route": {
"id": "1daf1f53-80b6-49d6-847a-0ee8b814e784-20180821"
},
"vehicle": {
"id": "1daf1f53-80b6-49d6-847a-0ee8b814e784"
},
"driver": {
"id": "6c2823be-374e-49e5-9d99-2c3f586fc093"
},
"orders": {
"6df85e5f-c8bc-4290-a544-03d7895526b9": {
"id": "6df85e5f-c8bc-4290-a544-03d7895526b9",
"delivery": {
"customFields": {
"custom": "5379"
}
},
"isService": true
}
}
}
]
};
我正在使用的代码可以工作到必须指定键值的程度:
function checkProperty(obj, prop) {
var parts = prop.split('.');
for (var i = 0, l = parts.length; i < l; i++) {
var part = parts[i];
if (obj !== null && typeof obj === "object" && part in obj) {
obj = obj[part];
} else {
return false;
}
return true;
}
以下是一些可行且失败的示例:
console.log(checkProperty(test, 'Routes.0.orders')); //Works returns true
console.log(checkProperty(test, 'Routes.0.orders.id')); //Fails returns false
console.log(checkProperty(test, 'Routes.0.orders.6df85e5f-c8bc-4290-a544-03d7895526b9.id)); //Fails returns false
我竭尽全力,感谢您的帮助...
答案 0 :(得分:0)
"orders": {
"6df85e5f-c8bc-4290-a544-03d7895526b9": {
"id": "6df85e5f-c8bc-4290-a544-03d7895526b9"
第二次测试:
在您的示例中,Id不是“订单”的直接子代:
orders.6df85e5f-c8bc-4290-a544-03d7895526b9.id
第三项测试:
第三句语法错误-缺少“。”