hässlich, aber wahr ...
var getValue = (o,p) => JSON.stringify(o).replace(new RegExp('.*?' + p + '":"([^"]*).+'),"$1"),
obj = {
p: {
s: {
name: 'demo'
}
}
};
document.write(getValue(obj,"name"));
Nun trotz meiner hässlichen Lösung funktioniert würde ich perfekt wie meine Version hinzufügen des rekursiven Ansatzes für das Gemeinwohl.
Folgendes wird das erste Aussehen der gesuchten Eigenschaft finden.
p = {
s: {
name: 'demo',
},
x: {
'something': 'me'
},
y: null,
z: {
'something': 'you'
}
};
var getValue = (o,v) => {
var ok = Object.keys(o),
f = false,
i = 0;
while (!f && i < ok.length) {
\t o[ok[i]] !== null && typeof o[ok[i]] === "object" && (f = getValue(o[ok[i]],v));
\t i++;
}
return o[v] || f;
};
document.write(getValue(p,"something"));
und die folgenden wird das letzte Auftreten der gesuchten Eigenschaft
p = {
s: {
name: 'demo',
},
x: {
'something': 'me'
},
y: null,
z: {
'something': 'you'
}
};
var getValue = (o,v) => {
var ok = Object.keys(o),
f = false,
i = 0;
while (!o[v] && i < ok.length) {
\t o[ok[i]] !== null && typeof o[ok[i]] === "object" && (f = getValue(o[ok[i]],v));
\t i++;
}
return o[v] || f;
};
document.write(getValue(p,"something"));
Nun ... während meiner ursprünglichen Lösung beteiligt 'JSON.stringify finden() 'erfüllt Ihre Bedingungen .. Ich habe zwei weitere Lösungen hinzugefügt, die rekursiv sind dies t ich; eine für den ersten Auftritt und eine für den letzten Auftritt des gesuchten Objekts. – Redu