[英]javascript initialize each value in the object with a default value
我有以下代码来计算页面中的链接数:
let temp = {}
for (const page of pages) {
let count = temp[page.outgoingLinks.length];
if (!count) {
count = 0;
}
count++;
temp[page.outgoingLinks.length]=count;
}
对不起,像 temp 这样的变量名,因为我正在尝试展示一些代码,这将帮助您了解我正在尝试做什么。 在这里,我想避免对初始化值的 if 检查的需要。
在此示例中,默认值为整数。 但我什至想在那里存储一个数组,比如 python 中的 defaultdict 。 关于如何在 JS 中做到这一点的任何想法?
JavaScript 中没有像 Python 的defaultdict
那样的东西,但是在使用nullish-coalescing 运算符访问属性时,您可以有一个默认值:
let count = temp[page.outgoingLinks.length] ?? 0;
避免需要初始化值的 if 检查
for (const page of pages) {
temp[page.outgoingLinks.length] = temp[page.outgoingLinks.length] ? temp[page.outgoingLinks.length]++ : 0;
}
在这里,您可以直接使用三元运算符来执行此操作。
当您需要多个默认值时,您可以创建一个包含默认值的对象。 该对象可以在辅助函数中定义,该函数接受一个参数,该参数指定您想要的默认值的类型,并返回一个可以使用该值调用的函数。
如果该值为undefined
或null
,则此函数返回所需类型的默认值。
function getInitializer(typeOfDefault) { const defaults = { arr: [0, 0, 0], num: 0, emptyString: '' }; return (value) => value ?? defaults[typeOfDefault]; } // default number const initialize = getInitializer('num'); const a = initialize(0); console.log(a); // default array const initialize2 = getInitializer('arr'); const b = initialize2(null); console.log(b);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.