javascript - 用一个元素初始化数组,如果数组存在则压入元素

标签 javascript arrays ecmascript-6

假设您有一个散列 o 数组;例如,当每个事件可以有 0 个或多个回调时,为事件注册回调。

在 ES6 中有更好的表达方式吗?

if (key in o) o[key].push(x); else o[key] = [x]

“更好”是指其他开发人员更容易理解。可能更简洁,但不以牺牲可读性为代价。一个特殊的(常见的)问题是 o 通常是一个较长的表达式,例如this.listeners,重复三次似乎不是最佳选择。所以真正的代码可能是这样的:

if (event in this.listeners)
    this.listeners[event].push(callback);
else
    this.listeners[event] = [callback];

最佳答案

通过使用 logical nullish assignment ??= ,您可以检查该属性,如果它是 undefinednull,则创建一个新数组。

(o[key] ??= []).push(x);

旧方法:

您可以使用逻辑或并在必要时创建一个数组。

o[key] = o[key] || [];
o[key].push(x);

关于javascript - 用一个元素初始化数组,如果数组存在则压入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951857/

相关文章:

javascript - 包含返回 false

node.js - ES6 - 并行向多个用户帐户发出多个请求

reactjs - 在 React 中将函数传递给 setState() 有什么好处?

Javascript全局变量重新定义?

javascript - 现代化类作业

Javascript:单击更改颜色并禁用其余图标

javascript - 有什么方法可以 stub 这些类型的函数吗?

python - 为什么numpy的效率不成比例

arrays - 最大限度。大于数组中给定数字的数字的距离

javascript - 如何导出ES6中保留名称的变量?