我有下一个JSON:
var JSONObject = {"animals": [{name:"cat"}, {name:"dog"}]};
Run Code Online (Sandbox Code Playgroud)
知道JSON对象中是否存在"dog"值的最佳方法是什么?
谢谢.
解决方案1
var JSONObject = {"animals": [{name:"cat"}, {name:"dog"}]};
...
for (i=0; i < JSONObject.animals.length; i++) {
if (JSONObject.animals[i].name == "dog")
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
解决方案2(JQuery)
var JSONObject = {"animals": [{name:"cat"}, {name:"dog"}]};
...
$.map(JSONObject.animals, function(elem, index) {
if (elem.name == "dog")
return true;
});
return false;
Run Code Online (Sandbox Code Playgroud)
解决方案3(使用some()方法)
function _isContains(json, value) {
let contains = false;
Object.keys(json).some(key => {
contains = typeof json[key] === 'object' ?
_isContains(json[key], value) : json[key] === value;
return contains;
});
return contains;
}
Run Code Online (Sandbox Code Playgroud)
Vij*_*iri 17
var JSON = [{"name":"cat"}, {"name":"dog"}];
Run Code Online (Sandbox Code Playgroud)
JSON变量引用具有一个名为"name"的属性的对象数组.我不知道最好的方法,但这就是我的工作?
var hasMatch =false;
for (var index = 0; index < JSON.length; ++index) {
var animal = JSON[index];
if(animal.Name == "dog"){
hasMatch = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
下面的函数可用于检查 JSON 中任何级别的值
function _isContains(json, value) {
let contains = false;
Object.keys(json).some(key => {
contains = typeof json[key] === 'object' ? _isContains(json[key], value) : json[key] === value;
return contains;
});
return contains;
}
Run Code Online (Sandbox Code Playgroud)
然后检查 JSON 是否包含该值
_isContains(JSONObject, "dog")
Run Code Online (Sandbox Code Playgroud)
看到这个小提琴:https : //jsfiddle.net/ponmudi/uykaacLw/
这里提到的大多数答案都是按“名称”键进行比较的。但无需关心密钥,只需检查 JSON 是否包含给定值即可。因此该函数可用于查找任何值,而不管键如何。
const hasValue = Object.values(json).includes("bar");
Run Code Online (Sandbox Code Playgroud)
function hasValueDeep(json, findValue) {
const values = Object.values(json);
let hasValue = values.includes(findValue);
values.forEach(function(value) {
if (typeof value === "object") {
hasValue = hasValue || hasValueDeep(value, findValue);
}
})
return hasValue;
}
Run Code Online (Sandbox Code Playgroud)
为什么不JSON.stringify和.includes()?
您可以通过将 JSON 对象转换为字符串并检查该字符串来轻松检查 JSON 对象是否包含值。
console.log(JSON.stringify(JSONObject).includes("dog"))
--> true
Run Code Online (Sandbox Code Playgroud)
编辑:确保检查浏览器兼容性.includes()
| 归档时间: |
|
| 查看次数: |
71722 次 |
| 最近记录: |