javascript - 在嵌套的对象数组中搜索js
问题描述
我有一个嵌套的对象数组,我试图在其中找到一个字符串。一旦我找到它,我想返回包含对象。 这是我的代码:
const myArray = [{
label: "Home",
last: "odlir",
children: [{
label: "Home 1",
last: "odlir1",
children: [{
label: "Home 2",
last: "odlir2"
}, {
label: "Home 3",
last: "odlir3"
}]
},
{
label: "Home 4",
last: "odlir4",
children: [{
label: "Home 5",
last: "odlir5"
}, {
label: "Home 6",
last: "odlir6"
}]
}
]
},
{
label: "dash",
last: "gom"
},
{
label: "principal",
last: "asd"
}
];
function contain(obj, string) {
if (obj == null)
return false;
if (obj.last == string)
return obj;
if (typeof obj.children == 'undefined')
return false;
for (let i = 0; i < obj.children.length; i++) {
if (contain(obj.children[i], string))
return obj;
}
return false;
}
function getObject(array, string) {
for (let i = 0; i < array.length; i++) {
if (contain(array[i], string)) {
return array[i];
}
}
}
console.log('test', getObject(myArray, 'odlir6'));
我正在取回我想要的对象,父对象甚至祖父。这是此代码的堆栈闪电:https ://stackblitz.com/edit/js-hgchmx
解决方案
您可以采用递归方法并为每个嵌套调用存储 paren 对象。
声明
result
,稍后此变量包含父对象。检查给定的变量是否不是
null
一个对象。没有就退出。通过短路迭代对象的值并
- 检查该值是否等于所需的字符串,然后返回对象的赋值。
- 否则返回递归调用的结果。
function getObject(object, string) {
var result;
if (!object || typeof object !== 'object') return;
Object.values(object).some(v => {
if (v === string) return result = object;
return result = getObject(v, string);
});
return result;
}
const
array = [{ label: "Home", last: "odlir", children: [{ label: "Home 1", last: "odlir1", children: [{ label: "Home 2", last: "odlir2" }, { label: "Home 3", last: "odlir3" }] }, { label: "Home 4", last: "odlir4", children: [{ label: "Home 5", last: "odlir5" }, { label: "Home 6", last: "odlir6" }] }] }, { label: "dash", last: "gom" }, { label: "principal", last: "asd" }];
console.log(getObject(array, 'odlir6'));
推荐阅读
- python - 使用 Node ADT 定义函数
- reactjs - 我如何获得用于反应传单的 Gall-peters 世界地图的 geoJson 文件
- python - 在 Django 中保存表单时出现意外的 aguments
- android - tensorflow-lite android上的蓝牙通信
- python - Django IntegrityError UNIQUE 约束失败:plans_customer.user_id
- html - 我可以在 srcset 中使用不同的文件类型吗?
- python - Python - 类中的静态方法创建该类的实例
- java - Java:如何从不同的类中调用数组,并修改它们?
- excel - VBA:只有可见的单元格被粘贴
- php - 在 PHP 中使用参数向量调用程序