Loading...
More JavaScript Posts
const quickSort = arr => {const a = [...arr];if (a.length < 2) return a;const pivotIndex = Math.floor(arr.length / 2);const pivot = a[pivotIndex];const [lo, hi] = a.reduce((acc, val, i) => {if (val < pivot || (val === pivot && i != pivotIndex)) {acc[0].push(val);} else if (val > pivot) {acc[1].push(val);}return acc;},[[], []]);return [...quickSort(lo), pivot, ...quickSort(hi)];};console.log(quickSort([1, 6, 1, 5, 3, 2, 1, 4])) // [1, 1, 1, 2, 3, 4, 5, 6]
"use strict";const nodemailer = require("nodemailer");// async..await is not allowed in global scope, must use a wrapperasync function main() {// Generate test SMTP service account from ethereal.email// Only needed if you don't have a real mail account for testinglet testAccount = await nodemailer.createTestAccount();// create reusable transporter object using the default SMTP transportlet transporter = nodemailer.createTransport({host: "smtp.ethereal.email",port: 587,secure: false, // true for 465, false for other portsauth: {user: testAccount.user, // generated ethereal userpass: testAccount.pass, // generated ethereal password},});// send mail with defined transport objectlet info = await transporter.sendMail({subject: "Hello ✔", // Subject linetext: "Hello world?", // plain text bodyhtml: "<b>Hello world?</b>", // html body});console.log("Message sent: %s", info.messageId);// Message sent: <[email protected]>// Preview only available when sending through an Ethereal accountconsole.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...}main().catch(console.error);
const MongoClient = require('mongodb').MongoClient;const assert = require('assert');// Connection URLconst url = 'mongodb://localhost:27017';// Database Nameconst dbName = 'myproject';// Use connect method to connect to the serverMongoClient.connect(url, function(err, client) {assert.equal(null, err);console.log("Connected successfully to server");const db = client.db(dbName);client.close();});
class TreeNode {constructor(data, depth) {this.data = data;this.children = [];this.depth = depth;}}function buildNaryTree(hosts) {const nodeMap = {};// Step 1: Create a map of nodes using fqdn as the keyhosts.forEach((host) => {nodeMap[host.fqdn] = new TreeNode(host, 0); // Initialize depth to 0});// Step 2: Iterate through the array and add each node to its parent's list of childrenhosts.forEach((host) => {if (host.displayParent) {if (nodeMap[host.displayParent]) {const parent = nodeMap[host.displayParent];const node = nodeMap[host.fqdn];node.depth = parent.depth + 1; // Update the depthparent.children.push(node);} else {console.error(`Parent with fqdn ${host.displayParent} not found for ${host.fqdn}`);}}});// Find the root nodes (nodes with no parent)const rootNodes = hosts.filter((host) => !host.displayParent).map((host) => nodeMap[host.fqdn]);return rootNodes;}function treeToObjects(node) {const result = [];function inOrder(node) {if (!node) {return;}// Visit the current node and add it to the resultresult.push(node.data);// Visit children nodes firstnode.children.forEach((child) => {inOrder(child);});}inOrder(node);return result;}// Usage exampleconst hosts = [{fqdn: 'fqdn_1',display_name: 'Host 1',},{fqdn: 'fqdn_2',display_name: 'Host 2',displayParent: 'fqdn_1',},{fqdn: 'fqdn_3',display_name: 'Host 3'},{fqdn: 'fqdn_4',display_name: 'Host 4',displayParent: 'fqdn_3',},{fqdn: 'fqdn_5',display_name: 'Host 5',displayParent: 'fqdn_1',},];const tree = buildNaryTree(hosts);// Function to convert the tree to an array of objectsfunction convertTreeToArray(nodes) {const result = [];nodes.forEach((node) => {result.push(...treeToObjects(node));});return result;}// Convert the tree back to an array of objectsconst arrayFromTree = convertTreeToArray(tree);console.log(arrayFromTree);
class LinkedList {constructor() {this.nodes = [];}get size() {return this.nodes.length;}get head() {return this.size ? this.nodes[0] : null;}get tail() {return this.size ? this.nodes[this.size - 1] : null;}insertAt(index, value) {const previousNode = this.nodes[index - 1] || null;const nextNode = this.nodes[index] || null;const node = { value, next: nextNode };if (previousNode) previousNode.next = node;this.nodes.splice(index, 0, node);}insertFirst(value) {this.insertAt(0, value);}insertLast(value) {this.insertAt(this.size, value);}getAt(index) {return this.nodes[index];}removeAt(index) {const previousNode = this.nodes[index - 1];const nextNode = this.nodes[index + 1] || null;if (previousNode) previousNode.next = nextNode;return this.nodes.splice(index, 1);}clear() {this.nodes = [];}reverse() {this.nodes = this.nodes.reduce((acc, { value }) => [{ value, next: acc[0] || null }, ...acc],[]);}*[Symbol.iterator]() {yield* this.nodes;}}const list = new LinkedList();list.insertFirst(1);list.insertFirst(2);list.insertFirst(3);list.insertLast(4);list.insertAt(3, 5);list.size; // 5list.head.value; // 3list.head.next.value; // 2list.tail.value; // 4[...list.map(e => e.value)]; // [3, 2, 1, 5, 4]list.removeAt(1); // 2list.getAt(1).value; // 1list.head.next.value; // 1[...list.map(e => e.value)]; // [3, 1, 5, 4]list.reverse();[...list.map(e => e.value)]; // [4, 5, 1, 3]list.clear();list.size; // 0
if (process.env.NODE_ENV === "production") {app.use(express.static("client/build"));app.get("*", (req, res) => {res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));});}