繁体   English   中英

javascript使用默认值初始化对象中的每个值

[英]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;
}

在这里,您可以直接使用三元运算符来执行此操作。

当您需要多个默认值时,您可以创建一个包含默认值的对象。 该对象可以在辅助函数中定义,该函数接受一个参数,该参数指定您想要的默认值的类型,并返回一个可以使用该值调用的函数。

如果该值为undefinednull ,则此函数返回所需类型的默认值。

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM