Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用变量键在一条语句中声明嵌套Javascript对象_Javascript_Reactjs - Fatal编程技术网

如何使用变量键在一条语句中声明嵌套Javascript对象

如何使用变量键在一条语句中声明嵌套Javascript对象,javascript,reactjs,Javascript,Reactjs,这可能是Ruby做得更好的地方,但是有没有更好的方法来编写此Javascript代码(对于React): Javascript的对象文字表示法(ES6之前)没有提供变量键。不过,您可以稍微减少分配的数量: handleCellChange: function(rowIdx, prop, val) { var updateObj = { data: {} }; (updateObj.data[rowIdx] = {})[prop] = { $set: val }; 你可以考虑或者不考虑任

这可能是Ruby做得更好的地方,但是有没有更好的方法来编写此Javascript代码(对于React):


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} } } };