JavaScript 对象深度搜索:查找特定值 (含数组支持)
以下是深度搜索对象是否存在某个值和传入的字符串相等的示例代码,可以考虑数组的情况:
function deepSearchObject(obj, searchValue) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
let value = obj[key];
if (typeof value === 'object') {
if (Array.isArray(value)) {
for (let i = 0; i < value.length; i++) {
if (deepSearchObject(value[i], searchValue)) {
return true;
}
}
} else {
if (deepSearchObject(value, searchValue)) {
return true;
}
}
} else {
if (value === searchValue) {
return true;
}
}
}
}
return false;
}
// 示例
let obj = {
name: 'John',
age: 30,
hobbies: ['reading', 'music'],
address: {
street: '123 Main St',
city: 'New York'
}
};
console.log(deepSearchObject(obj, 'reading')); // true
console.log(deepSearchObject(obj, 'New York')); // true
console.log(deepSearchObject(obj, 'swimming')); // false
以上代码中,我们首先遍历对象的所有属性,如果属性值是一个对象,我们就递归调用 deepSearchObject 函数去搜索这个对象的属性值。如果属性值是一个数组,我们就遍历数组中的每一个元素,对每个元素进行递归搜索。如果属性值是一个基本类型的值,我们就判断这个值是否等于传入的搜索值。如果找到了搜索值,就返回 true,否则最后返回 false。
原文地址: https://www.cveoy.top/t/topic/nCUA 著作权归作者所有。请勿转载和采集!