我需要找到包含id X的对象。
这就是我现在所做的,但我得到未定义。
在递归中你可以得到你想要的东西,但当你试图从函数中取出值时,它总是给出相同的值 undefined 。
以下是我的例子:
let partes = [
{
"id": 317,
"nombre": "Estación de Corte",
"padre": 0,
"conteo": 2,
"partes": [
{
"id": 320,
"nombre": "Ventosas",
"padre": 317,
"conteo": 3
}
]
},
{
"id": 1,
"nombre": "Estación de Formación",
"padre": 0,
"conteo": 2,
"partes": [
{
"id": 8,
"nombre": "Placas",
"padre": 1,
"conteo": 1,
"partes": [
{
"id": 305,
"nombre": "Superior ",
"padre": 8,
"conteo": 2
},
{
"id": 306,
"nombre": "Inferior",
"padre": 8,
"conteo": 2
}
]
}
]
},
{
"id": 4,
"nombre": "Estación de Calentamiento",
"padre": 0,
"conteo": 1,
"partes": [
{
"id": 7,
"nombre": "Placas",
"padre": 4,
"conteo": 1,
"partes": [
{
"id": 9,
"nombre": "Placa Superior de Calentamiento",
"padre": 7,
"conteo": 1
},
{
"id": 10,
"nombre": "Placa Inferior de Calentamiento",
"padre": 7,
"conteo": 1
}
]
}
]
},
{
"id": 341,
"nombre": "Sistema de Descarte",
"padre": 0,
"conteo": 2,
"partes": [
{
"id": 342,
"nombre": "Dedos de Retension",
"padre": 341,
"conteo": 2
}
]
},
{
"id": 334,
"nombre": "Sistema de Refrigeracion",
"padre": 0,
"conteo": 2,
"partes": [
{
"id": 336,
"nombre": "Evaporador",
"padre": 334,
"conteo": 1
},
{
"id": 335,
"nombre": "Compresor",
"padre": 334,
"conteo": 1
},
{
"id": 338,
"nombre": "Condensadora",
"padre": 334,
"conteo": 1
},
{
"id": 337,
"nombre": "Partes Electricas",
"padre": 334,
"conteo": 2
}
]
},
{
"id": 339,
"nombre": "Sistema de Deteccion",
"padre": 0,
"conteo": 10,
"partes": [
{
"id": 340,
"nombre": "Camaras",
"padre": 339,
"conteo": 10
}
]
},
{
"id": 309,
"nombre": "Estación de Sellado",
"padre": 0,
"conteo": 2,
"partes": [
{
"id": 310,
"nombre": "Placas",
"padre": 309,
"conteo": 5,
"partes": [
{
"id": 311,
"nombre": "Inferior",
"padre": 310,
"conteo": 5
},
{
"id": 312,
"nombre": "Superior",
"padre": 310,
"conteo": 5
}
]
},
{
"id": 315,
"nombre": "Leva",
"padre": 309,
"conteo": 1
},
{
"id": 314,
"nombre": "Muelles",
"padre": 309,
"conteo": 2
},
{
"id": 313,
"nombre": "Esparragos",
"padre": 309,
"conteo": 1
},
{
"id": 316,
"nombre": "Resortes",
"padre": 309,
"conteo": 1
}
]
}
];
function get_array(array, id) {
for (n in array) {
if(id === array[n].id){
return array[n].partes;
break;
}else if (array[n].partes) {
get_array(array[n].partes, id);
}
}
}
let graphic_array = (get_array(partes, 310));
console.log(graphic_array);
无需另外指定,提前谢谢。
答案 0 :(得分:1)
您可以迭代对象的所有键,并检查值是否匹配或迭代实际对象。
此提案适用于任何嵌套数据结构。
function getObject(object, value) {
var result;
return Object.keys(object).some(function (k) {
if (object[k] === value) {
result = object;
return true;
}
if (object[k] && typeof object[k] === 'object' && (result = getObject(object[k], value))) {
return true;
}
}) && result || undefined;
}
var data = [{ id: 317, nombre: "Estación de Corte", padre: 0, conteo: 2, partes: [{ id: 320, nombre: "Ventosas", padre: 317, conteo: 3 }] }, { id: 1, nombre: "Estación de Formación", padre: 0, conteo: 2, partes: [{ id: 8, nombre: "Placas", padre: 1, conteo: 1, partes: [{ id: 305, nombre: "Superior ", padre: 8, conteo: 2 }, { id: 306, nombre: "Inferior", padre: 8, conteo: 2 }] }] }, { id: 4, nombre: "Estación de Calentamiento", padre: 0, conteo: 1, partes: [{ id: 7, nombre: "Placas", padre: 4, conteo: 1, partes: [{ id: 9, nombre: "Placa Superior de Calentamiento", padre: 7, conteo: 1 }, { id: 10, nombre: "Placa Inferior de Calentamiento", padre: 7, conteo: 1 }] }] }, { id: 341, nombre: "Sistema de Descarte", padre: 0, conteo: 2, partes: [{ id: 342, nombre: "Dedos de Retension", padre: 341, conteo: 2 }] }, { id: 334, nombre: "Sistema de Refrigeracion", padre: 0, conteo: 2, partes: [{ id: 336, nombre: "Evaporador", padre: 334, conteo: 1 }, { id: 335, nombre: "Compresor", padre: 334, conteo: 1 }, { id: 338, nombre: "Condensadora", padre: 334, conteo: 1 }, { id: 337, nombre: "Partes Electricas", padre: 334, conteo: 2 }] }, { id: 339, nombre: "Sistema de Deteccion", padre: 0, conteo: 10, partes: [{ id: 340, nombre: "Camaras", padre: 339, conteo: 10 }] }, { id: 309, nombre: "Estación de Sellado", padre: 0, conteo: 2, partes: [{ id: 310, nombre: "Placas", padre: 309, conteo: 5, partes: [{ id: 311, nombre: "Inferior", padre: 310, conteo: 5 }, { id: 312, nombre: "Superior", padre: 310, conteo: 5 }] }, { id: 315, nombre: "Leva", padre: 309, conteo: 1 }, { id: 314, nombre: "Muelles", padre: 309, conteo: 2 }, { id: 313, nombre: "Esparragos", padre: 309, conteo: 1 }, { id: 316, nombre: "Resortes", padre: 309, conteo: 1 }] }];
console.log(getObject(data, 310));

.as-console-wrapper { max-height: 100% !important; top: 0; }