gpt4 book ai didi

javascript - 通过属性键查找对象深层 Javascript

转载 作者:行者123 更新时间:2023-12-03 02:48:53 25 4
gpt4 key购买 nike

我有以下代码:

你可以在这里访问jsbin.. https://jsbin.com/wupukuhita/1/edit?js,console

var foundObjects = [];
var findObjectByLabel = function(obj, key) {

var foundObject = [];
for(var i in obj) {
if(typeof obj[i] === "object"){
if(typeof obj[i][key] !== "undefined"){
foundObjects.push(obj[i]);
}
findObjectByLabel(obj[i],key);
}
}
return null;
};

我正在递归地迭代一个对象以查明某个属性是否存在。如果存在,则返回父对象。

您可以查看 jsbin 链接以获取完整示例。

我不喜欢函数之外的foundObjects。

我怎样才能将它放在函数中并只从函数返回包含特定属性的对象。

https://jsbin.com/wupukuhita/1/edit?js,console

最佳答案

您可以使用 JavaScript 闭包,它基本上是另一个函数中的一个函数,第二个函数可以访问主函数对象
请参阅此处的完整代码,它的工作原理与您的相同,只是我们返回数组

var foundObjects = function (obj,key) {
var foundObject = [];
var findObjectByLabel = function(obj,key) {
for (var i in obj) {
if (typeof obj[i] === 'object') {
if (typeof obj[i][key] !== 'undefined') {
foundObject.push(obj[i]);
}
findObjectByLabel(obj[i], key);
}
}
return null;
};
findObjectByLabel(obj,key);
return foundObject ;
}


var mainObj = {
name: 'MainForm', // main form
type: 'Form',
dirty: false,
valid: true,
Errors: [],
formOrInputElements: [
{
name: 'Age', // normal input
type: 'Text',
value: '',
dirty: true,
valid1: true,
test: {
name: 'test',
valid1: false,
},
Errors: [],
},
{
name: 'CNP', // normal input
type: 'Text',
value: '',
dirty: true,
valid: true,
Errors: [],
},
],
};

let foundObject = foundObjects(mainObj, 'valid1');

console.log(foundObject[0]);
console.log(foundObject[1]);

关于javascript - 通过属性键查找对象深层 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47981011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com