Я пытаюсь убедиться, что любые существующие, ненулевые или пустые значения не перезаписываются пустыми или нулевыми значениями из вызова API.
Например, предположим, что
originalReference['data']['articleTitle'] = 'Something or other';
и
reference['data']['articleTitle'] = '';
,
, где reference
- этообъект, который вернулся из API, и originalReference
- это объект, который существовал до вызова API (был загружен из базы данных MySQL).
Я хочу убедиться, что эта функция циклически проходит эти сложные объекты (оба должны всегдаиметь одинаковую длину и одинаковые имена свойств) и переназначает старое значение новому объекту.
Итак, в приведенном выше случае использования после выполнения функции articleTitle
в объекте reference
будет иметь вид:
reference['data']['articleTitle'] = 'Something or other';
Вотчто у меня пока что:
if (referenceLength == originalReferenceLength) {
try {
for (var prop in reference) {
// First check for undefined or null
if (reference[prop] != undefined) {
if (reference[prop] != null) {
if (typeof reference[prop] == 'string' && reference[prop].trim() == '') {
// Assign original value to new object if new value is empty string
reference[prop] = originalReference[prop];
}
// Check if current prop in both objects is an object
if (typeof reference[prop] == 'object' && typeof originalReference[prop] == 'object') {
for (var property in reference[prop]) {
// Check for undefined or null value in original
if (originalReference[prop][property] != undefined) {
if (originalReference[prop][property] != null) {
if (reference[prop][property] == null || reference[prop][property] == '') {
// Assign old non-null value to new object if new value is empty or null
reference[prop][property] = originalReference[prop][property];
}
}
}
}
}
if (Array.isArray(reference[prop]) && typeof Array.isArray(originalReference[prop])) {
// Recurse if both are arrays
reference[prop].forEach((item, index) => vm.evaluateEmptyValues(item, originalReference[prop][index]));
}
} else {
if (originalReference[prop] != undefined) {
if (originalReference[prop] != null) {
// Assign original value to new object
reference[prop] = originalReference[prop];
}
}
}
} else {
if (originalReference[prop] != undefined) {
if (originalReference[prop] != null) {
// Assign original value to new object
reference[prop] = originalReference[prop];
}
}
}
}
} catch(err) {
console.log(err);
}
}