JavaScript - 检查 JSON 中是否有特定键可用
JavaScript - Check if a particular key is available in the JSON
我正在从实时流数据中检索JSON。对于第一次调用,我正在获得带有时间和值的数据集数组。但在第二个 JSON 数据集数组中为空。我想检查数据集数组是否包含时间键。
首次调用后检索的 JSON:
{
"activities-heart-intraday": {
"dataset": [{
"time": "00:00:00",
"value": 91
}, {
"time": "00:01:00",
"value": 92
}, {
"time": "00:02:00",
"value": 92
}],
"datasetInterval": 1,
"datasetType": "second"
}
}
第二次调用后检索到的 JSON:
{
"activities-heart-intraday": {
"dataset": [],
"datasetInterval": 1,
"datasetType": "second"
}
}
我在做
var value = JSON.parse(data);
if (value.hasOwnProperty('time')) {
console.log("here");
}
以检查 JSON 中是否存在时间键,但它不起作用。
如何检查 json 中的数组中是否存在特定键?
首先,您必须检查dataset
是否不是一个空数组。然后检查是否已定义time
。
这可以通过以下方式解决:
if (dataset[0] !== undefined && dataset[0].time !== undefined)
或只是:
if (dataset[0] && dataset[0].time)
如果要循环访问数组:
dataset.forEach(function (data) {
if (data.time) {
// your code
}
});
数据有一个数据集数组,因此我们需要首先检查数组是否存在,然后检查其中一个数组成员是否具有 time 属性
if( data.hasOwnProperty('dataset') && data.dataset.length != 0){
if( data.dataset[0].hasOwnProperty('time')){
console.log('true');
}
}
由于在JS中,您无法通过点表示法本地设置和访问带有" -
"字符的对象属性,因此您可以将它们定义为字符串并使用括号表示法来设置和访问它们。所以你可以像这样做检查
data["activities-heart-intraday"].dataset.length > 0 && data["activities-heart-intraday"].dataset.every(e => !!e.time);
我真的无法从您的问题中分辨出data
应该是什么,但如果它是整个 JSON 对象,那么最简单的方法是:
if(data["activities-heart-intraday"]["dataset"][0]["time"])
console.log('time is set)
但要小心!例如,如果未设置dataset
,您将收到一个错误,提示您正在尝试从undefined
获取密钥time
并且代码将崩溃。我建议使用简单的递归函数,如下所示:
function is_there_the_key(json, keys){
if(keys.length == 0)
return true //we used the whole array, and every key was found
let key = keys.shift() //pop(get and remove) the first string from keys
if(!json[key]){
console.log(key + ' not found')
return false //one of the keys doesn't exist there
}
return is_there_the_key(json[key], keys)
}
无论你是true
还是false
返回,它们都会浮出水面。
作为json
参数,您传递要搜索的 json。
作为keys
参数,您可以按键的顺序传递键的数组(主要是字符串)。例如:
if(is_there_the_key(data, ["activities-heart-intraday", "dataset", 0, "time"])
//we found the key, do something here
相关文章:
- 主干-不管怎样,检查事件以前是否绑定过
- 如何让程序检查所选单词中是否有按键
- 用于检查数组中是否存在元素的javascript自定义方法
- 使用 jQuery 检查所有值是否为空或已填充
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 使用map来检查是否为真'不起作用
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 使用onkeyup JS事件检查输入的值是否唯一
- JS数组-检查对象值是否重复
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 如何在AngularJS中有效地检查日期是否有效
- 如何检查数组中的对象是否等于选项值
- 检查是否存在使用chrome扩展的javascript库
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 如何检查是否检查了分区中的所有单选按钮
- 验证是否检查了1到3个复选框,但id不同
- JavaScript 的类型函数是否检查空值
- 如何知道angularjs中的控制器中是否检查了单选按钮
- 在垃圾收集期间是否检查持久收集