Untitled
unknown
plain_text
a year ago
1.8 kB
5
Indexable
/**
* Spread Sheet Service
We are creating a service which will handle basic capabilities of an excel sheet. As a user I should be able to set any value to the cell and get
that value back. I should also be able to set a formulae into the cell and then return back the computed value. Create the following methods to
support the above
====== SetCell() ======
====== GetCell() =====
Make sure the code is working at the end with all test cases covered. Keep in mind that there is no third party interactio
*/
class SpreadSheet {
constructor() {
this.SpreadSheet = {};
this.formula = {}
}
SetCell(r, c, value) {
let cellId = c + r;
if (isNaN(value)) {
/**A+B+C
* C1 = A+B
*/
let formula = value
value = this.findCalculation(formula, cellId)
}
this.SpreadSheet[cellId] = { value: value, formula: value };
}
GetCell(r, c) {
let cellId = c + r;;
let valObj = this.SpreadSheet[cellId];
console.log(`current cell value of ${cellId} is ` + valObj.value)
return valObj.value;
}
findCalculation(formula, cell1) {
let dataArr = formula.split("");
let expression = ``;
dataArr.map((cellId) => {
if (cellId.match(/[A-Z]/)) {
this.formula[cellId + 1] = cell1;
} else if (!cellId.match(/[0-9]/)) {
let getObject = this.SpreadSheet[cellId];
expression += getObject?.value?.toString() || 0;
}
})
}
}
let spreadSheet = new SpreadSheet();
spreadSheet.SetCell(1, 'A', 20);
spreadSheet.SetCell(1, 'B', 30);
spreadSheet.GetCell(1, 'A');
spreadSheet.GetCell(1, 'B');
spreadSheet.SetCell(1, 'C', `A1+B1`);Editor is loading...
Leave a Comment