Untitled
unknown
javascript
2 years ago
2.3 kB
14
Indexable
// Define a recursive function to convert JSON
function convertJSONRecursive(inputJSON) {
// Check if the input is an object
if (typeof inputJSON === "object") {
// Check if the input is an array
if (Array.isArray(inputJSON)) {
// Initialize a new JSON object
const newJSON = {};
// Iterate over each item in the input array
for (const item of inputJSON) {
// Check if the item has an id
if (item.id) {
// Get the first operation allowed for the item
const operation = item.operationsAllowed[0];
// If the operation does not exist in the new JSON object, initialize it as an array
if (!newJSON[operation]) {
newJSON[operation] = [];
}
// Create a new item with the id and operations allowed from the original item
const newItem = {
id: item.id,
operationsAllowed: item.operationsAllowed,
};
// If the item has other allowed filters and they are an array, set them to null in the new item
if (item.otherAllowedFilters && Array.isArray(item.otherAllowedFilters)) {
newItem.otherAllowedFilters = null;
} else {
// Otherwise, recursively convert the other allowed filters
newItem.otherAllowedFilters = convertJSONRecursive(item.otherAllowedFilters);
}
// Add the new item to the operation in the new JSON object
newJSON[operation].push(newItem);
}
}
// Return the new JSON object
return newJSON;
} else {
// If the input is not an array, initialize a new JSON object
const newJSON = {};
// Iterate over each key in the input object
for (const key in inputJSON) {
// Recursively convert the value of the key and add it to the new JSON object
newJSON[key] = convertJSONRecursive(inputJSON[key]);
}
// Return the new JSON object
return newJSON;
}
} else {
// If the input is not an object, return the input as is
return inputJSON;
}
}
// Define the input JSON object
const inputJSON = {
// ...
};
// Call the function with the input JSON object and log the result
const convertedJSON = convertJSONRecursive(inputJSON);
console.log(JSON.stringify(convertedJSON, null, 2));Editor is loading...