在Ruby中,我可以执行以下操作:
very_long_dictionary_name = {}
very_long_key_name = "a"
# this code usually will run inside a function invoked twice,
# first with parameter "b" and after with parameter "c", so
# I don't know if very_long_dictionary_name[very_long_key_name]
# was initialized, inside the function
(very_long_dictionary_name[very_long_key_name] ||= []).push("b")
(very_long_dictionary_name[very_long_key_name] ||= []).push("c")
very_long_dictionary_name #=> {"a" => ["b", "c"]}
我在Javascript中尝试过,我在||=
遇到了语法错误。有没有办法在javascript 中将very_long_dictionary_name[very_long_key_name]
设置为空数组,只要它未定义,而不重复那个长名称?
答案 0 :(得分:0)
有没有办法设置
very_long_dictionary_name[very_long_key_name]
作为空数组 javascript只有在未定义的情况下,不重复那个长名称?
不在JavaScript中。您可以使用一些简写的if语句将对象键设置为空数组,但是所有这些都需要您将对象+键至少写入两次以用于您尝试执行的操作。
在JavaScript中,对象通过引用传递,因此您可以使用'别名'对于你的对象键,可以在不必担心效率的情况下稍微整理你的代码。
let myRef = very_long_dictionary_name // Reference variable,
changes with the object.
答案 1 :(得分:0)
如果我向我的very_long_dictionary_name
对象添加一个辅助方法,我只能做一次。
var very_long_dictionary_name = {}
var very_long_key_name = "a"
very_long_dictionary_name.push = function(key, value) {
if (!this.hasOwnProperty(key)) this[key] = []
this[key].push(value)
}
very_long_dictionary_name.push(very_long_key_name, "b")
very_long_dictionary_name.push(very_long_key_name, "c")
return JSON.stringify(very_long_dictionary_name)
// {"a":["b","c"]}
在同一条指令中不再重复very_long_dictionary_name
或very_long_key_name
。
此外,我必须确保帮助方法名称不会与某些可能的未来密钥冲突。