如何使用变量键在一条语句中声明嵌套Javascript对象
这可能是Ruby做得更好的地方,但是有没有更好的方法来编写此Javascript代码(对于React):如何使用变量键在一条语句中声明嵌套Javascript对象,javascript,reactjs,Javascript,Reactjs,这可能是Ruby做得更好的地方,但是有没有更好的方法来编写此Javascript代码(对于React): Javascript的对象文字表示法(ES6之前)没有提供变量键。不过,您可以稍微减少分配的数量: handleCellChange: function(rowIdx, prop, val) { var updateObj = { data: {} }; (updateObj.data[rowIdx] = {})[prop] = { $set: val }; 你可以考虑或者不考虑任
Javascript的对象文字表示法(ES6之前)没有提供变量键。不过,您可以稍微减少分配的数量:
handleCellChange: function(rowIdx, prop, val) {
var updateObj = { data: {} };
(updateObj.data[rowIdx] = {})[prop] = { $set: val };
<>你可以考虑或者不考虑任何改进-更简洁,但可能不那么可读。我衷心建议您将嵌套的
data
对象添加到updateObj
的初始赋值中(应该用var
声明,顺便说一句)。但是,将数据[rowIdx]
的初始化结果用作一个值,然后在同一行上建立索引,这是一个更值得怀疑的值。在ES6中,可以使用计算属性名称:
updateObj = { data: { [rowIdx]: { [prop]: {$set: val} } } };
您可以在Traceur或Firefox中每晚使用它(但在node-harmony中还没有)
这里有一个东西可以为您传输此语法:
有关更多信息,请参阅。另请参见中的“计算属性”项。这是否符合您的要求:?不完全是--键是变量,而不是常量。是的,请再次查看set函数-键可以是变量:
set(foo,[data,rowIdx,prop],5)
我仍然希望它们在这方面使用胖箭头,而不是在箭头函数中使用它。这样一来,语法不仅与Perl、Ruby、Erlang maps和Julia保持一致,甚至还与Ruby 1.9+的文字符号语法保持一致:{foo:1}
vs{foo=>1}
在两种语言中的意思基本相同(除了字符串vs符号)。啊,好吧。我不知道这个决定的背景,但我想保留冒号的语义,或者避免属性名称后面的内容(:
vs.=>
)将其含义从字面改为表达式是有道理的。谢谢。括号的有趣用法(对于我红宝石般的眼睛)。
updateObj = { data: { [rowIdx]: { [prop]: {$set: val} } } };