JS在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
模拟目录管理功能(用多叉树模拟文件管理) 发布于:2025-03-24 19:02 项目排期(二分+回溯) 发布于:2025-03-24 18:16 【跳格子3】(动态规划:dp[i]=Math.max(dp[i-k]-dp[i-1])+scores[i]) 发布于:2025-03-24 17:17 中文分词模拟器(将words中的所有元素放入集合中,从sentenes中的每个sentence开始查找,从sentence本身开始查,然后一个字母一个字母的缩小,查到words中有sentence.slice(0,r)时,如果r<sentence.length,就将sentence截断,截断后的新sentence放到sentences的队首。如果一直检查到结尾都没有,那就将首字母截断,将剩余的放入队首重新检查) 发布于:2025-03-24 16:55 二叉树计算 发布于:2025-03-24 16:38 电脑病毒感染(单元最短路径求解: dijkstra算法:用group将所有路径都储存起来;定义visited数组记录已经访问过的节点,dist记录到节点i的最短路径长度;定义一个数组queue,将图的初始节点记录,循环queue,每次推出栈顶元素[u,dist];如果visited[u]==true,代表这个元素已经访问过,continue;否则,从图中找出所有和u相关的路径[u,v,w],dist[u]+w就是从原点到节点v的距离newDist,将这个newdist和dist[v]比较,如果小于dist[v]则更新dist[v]。并将这个节点推入queue中。进行过一次while循环就重新对queue数组排序,确保栈顶元素是最小值) 发布于:2025-03-24 15:49 爱吃蟠桃的孙悟空(二分法,min==1 max==Math.max(...arr) 计算吃完花费的时间,cost<=H?mid = max-1:mid = min+1) 发布于:2025-03-24 14:58 模拟商场优惠打折(自定义排序+自定义算法) 发布于:2025-03-21 18:03 开心消消乐(就是孤岛数量,bfs) 发布于:2025-03-21 16:39 【事件推送】(因为是升序数组,直接双指针,每当符合条件的数字对存在时让指向第一个元素的+1,否则就另一个+1) 发布于:2025-03-21 16:20 按单词下标区间翻转文章内容(字符串反转,简单的数组反转) 发布于:2025-03-21 16:10 太阳能板最大面积(取左边和右边最小的板为高,两坐标差为宽相乘;并移动短板,知道i==j) 发布于:2025-03-21 15:49 相对开音节(正则解法:判断是否带数字和符号正则:/[^a-z]/;元音正则:[aeiou]辅音正则:[^aeiou]) 发布于:2025-03-20 19:14 最大括号深度(左括号入栈并检查深度,右括号比较栈顶是否为对应的左括号,不是返回0,是出战继续) 发布于:2025-03-20 18:38 最多提取子串数目(逻辑分析:将A中出现的每一个B中的字母进行计数,使用一个集合idx记录b中每个字母的下标;在使用一个集合count记录扫描A时B中每个元素的次数;扫描一遍A的字母c,如果idx[c]!==undefined&&count[idx[c]]<count[idx[c]-1) count[idx[c]++];取count中最后一个元素的值,就是出现的次数 发布于:2025-03-20 18:28 比赛的冠亚季军(// 初始栈放入所有人的编号;// 用栈模拟:不断向stack中插入win lost数组,当stack[stack.length-1]的长度为1时,就已经选出了冠军\) 发布于:2025-03-20 17:59 任务总执行时长(两种任务,一共i个,求所有可能的排列组合) 发布于:2025-03-20 17:08 完全二叉树非叶子部分后序遍历(用数组模拟完全二叉树:lchild=root*2+1,rchild=root*2+2;用dfs遍历二叉树;当左子树不为空时继续遍历左子树了又子树不为空时继续遍历右子树,最后将root放入ans) 发布于:2025-03-20 16:59 工程:多工程少天数时数组排列 发布于:2025-03-20 17:36 【寻找密码】(先按照字符串长度和字典顺序排序,将所有字符串都放入set中 排序后的对每一个字符串进行循环,从最后一位开始切割,如果每一个子串都能在set中找到,那么这个字符串就是答案) 发布于:2025-03-20 16:39 字符串解密(用正则把字符串分割,分割后在的子数组排序,找到不同字母最接近目标字符串的) 发布于:2025-03-20 16:27 最长的顺子(map记录每一张牌的剩余数量,用双指针选出数量每一个连成顺子的长度以及下标,如果长度大于5就选出这个下标中长度最大的) 发布于:2025-03-20 15:50 寻找关键钥匙(字符串操作 找出所有字母后升序) 发布于:2025-03-20 15:47 外卖员跑单组合(回溯) 发布于:2025-03-20 14:35 【洪水救援】(双指针一个指向队头一个指向队尾,判断arr[i]+arr[j]是否大于limit,如果大于就j-- ans++ 否则就i++ j-- ans++) 发布于:2025-03-20 14:14 事件监听时间 发布于:2025-03-19 23:49 堆内存申请(自定义used数组,按照输入把使用过的填false 然后找到连续的true数组,比较,如果和输入大小最接近,返回l) 发布于:2025-03-19 20:02 最远足迹(字符串操作,匹配括号内的数组数据) 发布于:2025-03-19 19:43 倒 N 形走位(逻辑分析:let reverse = true; for (let i = 0; i < x; i++) { let k = i % n; if (k == 0) reverse = !reverse; if (reverse) k = n - 1 - k; matrix[k].push(i + 1); }) 发布于:2025-03-19 19:34 【木板】最短木板的长度最大可以为多少(补充木板不为0一直循环;从第二根开始,如果比前一根长,就在前一根上+1;如果一直到最后都一样长,在在最后一个+1并重新开始循环,直到m用光) 发布于:2025-03-19 19:26 最大矩阵和(将矩阵的每一行都求一遍最大子数组的和,然后从第二行开始,将i+1-N行的数都压缩到第i行后分别求最大子数组的和) 发布于:2025-03-19 19:16 求最多可以派出多少支团队(单独组队的挑出去后排序,剩下的双指针 一个指向队尾一个指向队头,如果>=min就++ l++r--;小于就l++) 发布于:2025-03-19 18:37 AI识别(逻辑分析 自定义排序(灯的半径 左边 idx排序)) 发布于:2025-03-19 18:07 分奖金(暴力破解-双循环) 发布于:2025-03-19 18:06 【计算最接近的数】(滑动窗口) 发布于:2025-03-18 19:44 【抓阄游戏】(字符串自定义排序) 发布于:2025-03-18 19:15 路灯照明问题(遍历每对相邻路灯(共 n-1 对),计算它们之间的未照明间隙: 间隙公式:100 - (r_i + r_{i+1}),若结果为负数则取 0。 累加所有间隙到 total。) 发布于:2025-03-18 18:55 最大花费金额(三数之和 双指针) 发布于:2025-03-18 18:34 【机房布局】(逻辑分析:M右边是I时候放右边,跳两个;右边不是左边是I的时候放左边,挑一个·1) 发布于:2025-03-18 18:08 【玩牌高手】(动态规划,取最大值) 发布于:2025-03-18 17:54 【班长竞选】(自定义排序) 发布于:2025-03-18 17:48 字符串摘要(自定义排序+逻辑分析()) 发布于:2025-03-18 17:32 数组连续和(滑动窗口) 发布于:2025-03-18 17:03 勾股数元组(欧几里得算法/暴力枚举) 发布于:2025-03-18 16:43 【比赛】选手前3名的编号(自定义排序) 发布于:2025-03-17 19:28 数据库实验一 发布于:2025-03-17 18:39 【日志排序】(js.new Date()) 发布于:2025-03-17 18:33 【分班】同班的小朋友(逻辑分析,用一个判断变量) 发布于:2025-03-17 18:19 传递悄悄话(二叉树层序遍历) 发布于:2025-03-17 18:02 数组组成的最小数字(排序) 发布于:2025-03-17 17:35 [更多]
显示目录

实用工具



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

实用工具

稳定性: 4 - 锁定

本节介绍Node.js的'util'模块中的函数的使用,通过require('util')访问该模块,如下所示:

const util = require('util');

util 模块原先设计的初衷是用来支持Node.js的内部API的。这里的很多的函数对你的程序来说都非常有用。如果你觉得这些函数不能满足你的要求,那你可以写自己的工具函数。我们不希望'util'模块里添加对于node内部函数无用的扩展。

util.debuglog(section)

  • section{字符串} 被调试的程序节点部分
  • Returns: {Function} 日志函数

用来创建一个有条件的写到stderr的函数(基于NODE_DEBUG环境变量)。如果section出现在环境变量里,返回函数将会和console.error()类似。否则,返回一个空函数。

例如:

var debuglog = util.debuglog('foo');

var bar = 123;
debuglog('hello from foo [%d]', bar);

如果这个程序以NODE_DEBUG=foo的环境运行,将会输出:

FOO 3245: hello from foo [123]

3245是进程ID。如果没有运行在这个环境变量里,将不会打印任何东西。

可以用逗号切割多个NODE_DEBUG环境变量。例如:NODE_DEBUG=fs,net,tls

util.format(format[, ...])

使用第一个参数返回一个格式化的字符串,类似printf

第一个参数是字符串,它包含0或更多的占位符。每个占位符被替换成想要参数转换的值。支持的占位符包括:

  • %s- 字符串.
  • %d- 数字 (整数和浮点数).
  • %j- JSON。如果参数包含循环引用,将会用字符串替换R
  • %%- 单独一个百分号 ('%')。 不会消耗一个参数。

如果占位符没有包含一个相应的参数,占位符不会被替换。

util.format('%s:%s', 'foo'); // 'foo:%s'

如果参数超过占位符,多余的参数将会用util.inspect()转换成字符串,并拼接在一起,用空格隔开。

util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'

如果第一个参数不是格式化字符串,那么util.format()会返回所有参数拼接成的字符串(空格分割)。每个参数都会用util.inspect()转换成字符串。

util.format(1, 2, 3); // '1 2 3'

util.log(string)

stdout输出并带有时间戳:

require('util').log('Timestamped message.');

util.inspect(object[, options])

返回一个对象的字符串表现形式,在代码调试的时候非常有用。

通过加入一些可选选项,来改变对象的格式化输出形式:

  • showHidden- 如果为true,将会显示对象的不可枚举属性。默认为false

  • depth- 告诉inspect格式化对象时递归多少次。这在格式化大且复杂对象时非常有用。默认为 2。如果想无穷递归的话,传null

  • colors- 如果为true,输出内容将会格式化为有颜色的代码。默认为false, 颜色可以自定义,参见下文。

  • customInspect- 如果为false,那么定义在被检查对象上的inspect(depth, opts) 方法将不会被调用。 默认为true。

检查util对象上所有属性的例子:

var util = require('util');

console.log(util.inspect(util, { showHidden: true, depth: null }));

当被调用的时候,参数值可以提供自己的自定义inspect(depth, opts)方法。该方法会接收当前的递归检查深度,以及传入util.inspect()的其他参数。

自定义util.inspect颜色

util.inspect通过util.inspect.stylesutil.inspect.colors对象,自定义全局的输出颜色,

util.inspect.stylesutil.inspect.colors组成风格颜色的一对映射。

高亮风格和他们的默认值:

  • 数字 (黄色)
  • boolean (黄色)
  • 字符串 (绿色)
  • date (洋红)
  • regexp (红色)
  • null (粗体)
  • undefined (斜体)
  • special (青绿色)
  • name (内部用,不是风格)

预定义的颜色为: white斜体blackbluecyan绿色洋红红色黄色以及粗体斜体下划线反选风格。

对象上德自定义inspect()函数

对象也能自定义inspect(depth)函数, 当使用util.inspect()检查该对象的时候,将会执行对象自定义的检查方法:

var util = require('util');

var obj = { name: 'nate' };
obj.inspect = function(depth) {
  return '{' + this.name + '}';
};

util.inspect(obj);
  // "{nate}"

你可以返回另外一个对象,返回的字符串会根据返回的对象格式化这和JSON.stringify()的工作流程类似。您还可以完全返回另一个对象,返回的字符串将根据返回的对象格式化。这与JSON.stringify()的工作方式类似:

var obj = { foo: 'this will not show up in the inspect() output' };
obj.inspect = function(depth) {
  return { bar: 'baz' };
};

util.inspect(obj);
  // "{ bar: 'baz' }"

util.isArray(object)

Array.isArray的内部别名。

如果参数"object"是数组,返回true ,否则返回false

var util = require('util');

util.isArray([])
  // true
util.isArray(new Array)
  // true
util.isArray({})
  // false

util.isRegExp(object)

如果参数"object"是RegExp返回true ,否则返回false

var util = require('util');

util.isRegExp(/some regexp/)
  // true
util.isRegExp(new RegExp('another regexp'))
  // true
util.isRegExp({})
  // false

util.isDate(object)

如果参数"object"是Date返回true,否则返回false

var util = require('util');

util.isDate(new Date())
  // true
util.isDate(Date())
  // false (without 'new' returns a String)
util.isDate({})
  // false

util.isError(object)

如果参数"object"是Error返回true,否则返回false

var util = require('util');

util.isError(new Error())
  // true
util.isError(new TypeError())
  // true
util.isError({ name: 'Error', message: 'an error occurred' })
  // false

util.inherits(constructor, superConstructor)

从一个构造函数constructor继承原型方法到另一个。构造函数的原型将被设置为一个新的从超类(superConstructor)创建的对象。

通过constructor.super_属性可以访问superConstructor

var util = require("util");
var events = require("events");

function MyStream() {
    events.EventEmitter.call(this);
}

util.inherits(MyStream, events.EventEmitter);

MyStream.prototype.write = function(data) {
    this.emit("data", data);
}

var stream = new MyStream();

console.log(stream instanceof events.EventEmitter); // true
console.log(MyStream.super_ === events.EventEmitter); // true

stream.on("data", function(data) {
    console.log('Received data: "' + data + '"');
})
stream.write("It works!"); // Received data: "It works!"

util.deprecate(function, string)

标明该方法不要再使用。

exports.puts = exports.deprecate(function() {
  for (var i = 0, len = arguments.length; i < len; ++i) {
    process.stdout.write(arguments[i] + '\n');
  }
}, 'util.puts: Use console.log instead')

返回一个修改过的函数,默认情况下仅警告一次。如果设置了--no-deprecation该函数不做任何事。如果设置了--throw-deprecation,如果使用了该API应用将会抛出异常。

util.debug(string)

稳定性: 0 - 抛弃: 使用 console.error() 替换。

console.error的前身。

util.error([...])

稳定性: 0 - 抛弃: 使用 console.error() 替换。

console.error的前身。

util.puts([...])

稳定性: 0 - 抛弃:使用 console.log() 替换。

console.log的前身。

util.print([...])

稳定性: 0 - 抛弃: 使用 console.log() 替换。

console.log的前身。

util.pump(readableStream, writableStream[, callback])

稳定性: 0 - 抛弃: Use readableStream.pipe(writableStream)

stream.pipe的前身。

由JSRUN为你提供的JS在线运行、在线编译工具
        JSRUN提供的JS 在线运行,JS 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout