Right here is my drawback, I obtain these sort of json knowledge and I do not know prematurely the keys (unknownProperty#) however the completely different objects on this knowledge array have the identical keys. What I must do is to calculate the variety of every degree of alert (these ranges are fastened).
Here’s what my finish end result ought to appear to be
var end result = { unknownProperty1: { unknown: 0, okay: 2, warning: 0, ko: 1 },
unknownProperty2: { unknown: 0, okay: 0, warning: 2, ko: 1 },
unknownProperty3: { unknown: 3, okay: 0, warning: 0, ko: 0 },
unknownProperty4: { unknown: 0, okay: 0, warning: 3, ko: 0 },
unknownProperty5: { unknown: 0, okay: 0, warning: 2, ko: 1 } }
My script is working however I wish to know if there may be any strategy to optimize/clear it with map/cut back/filter javascript perform
const knowledge = [
{
unknownProperty1: { alert: "ok", unusedItem1: "something" },
unknownProperty2: { alert: "warning", unusedItem1: "something" },
unknownProperty3: { alert: "unknown", unusedItem1: "something" },
unknownProperty4: { alert: "warning", unusedItem1: "something" },
unknownProperty5: { alert: "ko", unusedItem1: "something" }
},
{
unknownProperty1: { alert: "ok", unusedItem1: "something" },
unknownProperty2: { alert: "warning", unusedItem1: "something" },
unknownProperty3: { alert: "unknown", unusedItem1: "something" },
unknownProperty4: { alert: "warning", unusedItem1: "something" },
unknownProperty5: { alert: "warning", unusedItem1: "something" }
},
{
unknownProperty1: { alert: "ko", unusedItem1: "something" },
unknownProperty2: { alert: "ko", unusedItem1: "something" },
unknownProperty3: { alert: "unknown", unusedItem1: "something" },
unknownProperty4: { alert: "warning", unusedItem1: "something" },
unknownProperty5: { alert: "warning", unusedItem1: "something" }
}
];
var end result = new Object();
var dataKeys = knowledge.map(perform(ingredient) {
return Object.keys(ingredient);
});
dataKeys[0].map(perform(ingredient) {
end result[element] = { unknown: 0, okay: 0, warning: 0, ko: 0 };
});
//At this level the result's like what we anticipate however no calculation has been made but
//We then increment the appropriate values
knowledge.map(perform(ingredient) {
for (var prop in ingredient) {
if (Object.prototype.hasOwnProperty.name(ingredient, prop)) {
// ingredient correspond to the present object
// prop corresponds to the title of the important thing, for instance 'unknownProperty1'
swap (ingredient[prop].alert) {
case "okay":
end result[prop].okay++;
break;
case "warning":
end result[prop].warning++;
break;
case "unknown":
end result[prop].unknown++;
break;
case "ko":
end result[prop].ko++;
break;
default:
break;
}
}
}
});
console.log(end result);