假设您有一个散列 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 ??=
,您可以检查该属性,如果它是 undefined
或 null
,则创建一个新数组。
(o[key] ??= []).push(x);
旧方法:
您可以使用逻辑或并在必要时创建一个数组。
o[key] = o[key] || [];
o[key].push(x);
关于javascript - 用一个元素初始化数组,如果数组存在则压入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951857/