我有这个对象:
{
services:
{ 'account-service': 1,
'activity-service': 1,
'cancellation-service': 1,
'chat-service': 1,
'integrator-service': 1,
'lh-app': 1,
'notification-service': 1,
'patient-web-app': 0, // make this line red if 0
'reminder-service': 1,
'rest-service': 1,
'shortener-service': 1,
'socket-service': 1,
'tunnel-service': 1,
'web-app': 1 } }}
如果数字之一为0,我想用红色代替黄色。任何人都知道创建自定义util.inspect函数的方法可以做到这一点吗?
答案 0 :(得分:2)
当您将JSON.stringify
的{{1}}选项设置为true时,util.inspect
的输出。例如;
colors
它显示了所应用的ANSI颜色/格式代码。
鉴于您的console.log('%s', JSON.stringify(util.inspect(obj, { colors: true })));
属性的值设置为patient-web-app
,您将看到其格式为:
0
考虑使用正则表达式执行替换。例如:
\u001b[32m'patient-web-app'\u001b[39m: \u001b[33m0\u001b[39m,\n
打印
答案 1 :(得分:0)
您可以使用util.inspect.custom
符号返回自定义字符串,该字符串将在调用inspect
时按原样记录到控制台。
Here is the official documentation。
console.table
渲染 console.table
实际上在要渲染的每个单元格值上调用inspect
。如果要在单元格上进行自定义渲染,只需使其具有[util.inspect.custom]
属性的对象即可返回自定义字符串:
import colors from 'colors/safe'; // i want to use custom colors
// ...
// utilty function to make any result render as-is
function overrideInspect(result) {
return {
[util.inspect.custom](depth, options) {
return result;
}
};
}
function renderUsers(users) {
const table = [];
for (const user of users) {
// ... get all our data ...
let modInfo = '';
if (role >= ModeratorRole) {
modInfo = colors.yellow(' M');
}
// add to table
table.push({
name: overrideInspect(displayName + modInfo), // append yellow `M` to white name if it's a mod
email,
signup,
stats,
uid
});
}
// render table
console.table(table, [
'name',
'email',
'signup',
'stats',
'uid'
]);
}