Assigment For Mern Stack
Assigment For Mern Stack
The
function should take an array that may contain nested arrays of arbitrary depth as
input and return a single, flattened array containing all the elements.
Output: [1, 2, 3, 4, 5, 6]
arr.forEach((item) => {
if (Array.isArray(item)) {
result = result.concat(flattenArray(item));
} else {
result.push(item);
}
});
return result;
};
// Example
const notFlatArr= [1, [2, [3, [4]], 5], 6];
console.log(flattenArray(notFlatArr));
Q3. Implement an algorithm for rate-limiter using a sliding window or token bucket
approach in javascript
Ans.
type RateLimiter = {
tryConsume: () => boolean;
};
function createRateLimiter(limit: number, interval: number): RateLimiter {
let tokens = limit;
let lastRefillTime = Date.now();
function refillTokens() {
const now = Date.now();
const elapsedTime = now - lastRefillTime;
const tokensToAdd = Math.floor((elapsedTime / interval) * limit);
if (tokensToAdd > 0) {
tokens = Math.min(limit, tokens + tokensToAdd);
lastRefillTime = now;
}
}
return { tryConsume };
}
// Example
const limiter = createRateLimiter(5, 10000);
setInterval(() => {
console.log("Request allowed:", limiter.tryConsume());
}, 2000);
4. Create a component that fetches and displays data from a mock API (e.g.,
https://jsonplaceholder.typicode.com/todos/1).
Ans.
useEffect(() => {
fetchData();
}, []);
return (
<div className="flex flex-col items-center p-4">
<Card className="shadow-lg">
<CardContent className="p-4">
{loading && <p>Loading...</p>}
{error && <p className="text-red-500">Error: {error}</p>}
{todo && (
<div>
<h2 className="text-xl font-semibold">Todo #{todo.id}</h2>
<p className="text-gray-600">{todo.title}</p>
<p className={todo.completed ? "text-green-500" : "text-red-500"}>
{todo.completed ? "Completed" : "Not Completed"}
</p>
</div>
)}
<Button className="mt-4" onClick={fetchData}>Refresh</Button>
</CardContent>
</Card>
</div>
);
};