У меня есть объект с непоследовательной структурой вложения, который я не могу контролировать.Мне нужно извлечь определенное значение, если оно удовлетворяет определенному условию.
в настоящее время делает это, рекурсивно перебирая свойства и сопоставляя свойства с условием и помещая сопоставленные значения в пустой массив, например так:
var obj = {"a":0,"b":{"x":1,"y":100},"c":[{"x":1,"y":120},{"x":2,"y":140}]};
var extracts = [];
extractProp(obj);
function extractProp(obj){
for (var key in obj){
if (key == "x" && obj[key]=="1"){
extracts.push(obj["y"]);
} else {
extractProp(obj[key]);
}
}
}
console.log(extracts); //(2) [100, 120]
, что позволяет мне получить ожидаемый результат.В моем предыдущем вопросе кто-то указал лучший способ изменения частей json, передав параметр reviver в JSON.parse.Это заставило меня задуматься о том, что должен быть лучшим способом сделать это тоже.Есть ли встроенная / встроенная функция в javascript для этого?