// const import fs from 'fs';
function deleteEveryChangesArrayRecursively(data) {
if (Array.isArray(data)) {
data.forEach(item => deleteEveryChangesArrayRecursively(item));
} else if (data && typeof data === 'object') {
Object
.entries(data)
.forEach(([key, value]) => {
if (key === 'changes' && Array.isArray(value)) {
Reflect.deleteProperty(data, key);
} else {
deleteEveryChangesArrayRecursively(value);
}
});
}
return data;
}
/*function getDataFromJsonFile(path) {
try {
const json = fs
.readFileSync(path, { encoding: 'utf8' });
return { success: true, data: JSON.parse(json) };
} catch (exception) {
return { success: false, exception };
}
}
function writeDataAsJsonFile(path, data) {
try {
fs.writeFileSync(path, JSON.stringify(data));
return { success: true };
} catch (exception) {
return { success: false, exception };
}
}*/
// mocking both, read and parse from file and stringify and write as file.
const getDataFromJsonFile = () => ({ data: structuredClone(mockData) });
const writeDataAsJsonFile = () => ({ success: true });
let { data = null, success, exception }
= getDataFromJsonFile('./data.json');
if (data !== null) {
({ success, exception } = writeDataAsJsonFile(
'./data.json',
deleteEveryChangesArrayRecursively(data),
));
}
console.log({ mockData, data, success, exception });
.as-console-wrapper { min-height: 100%!important; top: 0; }
<script>
// mocking the parsed json.
const mockData = {
foo: [{
changes: [0, 1, 2],
}, {
foobar: ['FOO', 'BAR'],
changes: 'not an array',
}, {
foobaz: 'FOO BAZ',
changes: [3, 4, 5],
}, {
foobiz: [{
foobizbar: ['FOO', 'BIZ', 'BAR'],
changes: 'not an array',
}, {
foobizbaz: 'FOO BIZ BAZ',
changes: [6, 7, 8],
}, {
foobizbiz: 'FOO BIZ BIZ',
changes: [9, 0, 1],
}],
}, {
changes: [2, 3, 4],
}, {
foobar2: ['FOO', 'BAR', '2'],
changes: 'not an array',
}, {
foobaz2: 'FOO BAZ 2',
changes: [5, 6, 7],
}, {
foobiz2: [{
foobiz2bar: ['FOO', 'BIZ', '2', 'BAR'],
changes: 'not an array',
}, {
foobiz2baz: 'FOO BIZ 2 BAZ',
changes: [8, 9, 0],
}, {
foobiz2biz: 'FOO BIZ 2 BIZ',
changes: [1, 2, 3],
}],
}],
};
</script>