我正在函数中创建一个对象 - 我传递了3个变量,1个是名称,2个是名称,3是数组。
所以现在我像这样创建这个对象
createObj(var, var2, var3){
var temp1 = {};
var temp2 = {};
temp2[var2] = var3;
temp1[var] = temp2;
}
创建和对象
{var1 : {var2 : var3 }};
所以这很好用(我希望对象看起来像这样),但是我想知道是否有办法在不使用这么多变量的情况下做到这一点?我使用下划线,如果这使它更容易。如果有一种更优雅(并且希望)简单的方法来实现这一点,那将会很酷。我的意思是,这种方法对我来说很好,但我正在努力提高我的javascript技能,并尽可能使用更少的代码:)。谢谢!
答案 0 :(得分:1)
这完全没问题。只有使用ES6才能获得允许您执行{[var1]: {[var2]: var3}}
的文字。当然,如果你看到自己一遍又一遍地做这件事,你可以编写一个辅助函数 - 你实际上只是在做。
编写此函数的一种更优雅的方式可能是
function createObj(key, val) {
if (arguments.length > 2)
val = createObj.apply(null, Array.prototype.slice.call(arguments, 1));
var temp = {};
temp[key] = val;
return temp;
}
这样它可以无限多地使用arguments。但你也可以这样做
function createObj(key, val) {
var temp = {};
temp[key] = val;
return temp;
}
并将其称为createObj(var1, createObj(var2, var3))
,它可以更好地表达您的意图。而且对于只有两次调用,你还不需要循环/递归。