【发布时间】:2018-05-11 01:30:57
【问题描述】:
我正在努力实现以下目标: 假设我有一个这样的对象:
myObj = {
john: {1: ['a', 'b',..], 2: ['aa', 'vv',...],
tom: {1: ['ab', 'bb',..], 2: ['aa', 'vv',...],
}
为了实现上述目标,我正在做这样的事情
function (name, myNum, myList) {
let myObj = Object.assign({}, state);
// name and myNum and myList values are passed in for this eg i am
// hardcoding
let name = 'jon';
let myNum = 1;
let mylist = [1,2,3];
// I want to replace the if / else with a more elegant solution
if (myObj.hasOwnProperty(name)) {
myObj[name][myNum] = myList;
} else {
myObj[name] = {[myNum]: myList};
}
return myObj;
}
我确信有一种更简洁的方法可以做到这一点,使用 Object.assign 或 object spread。
请提出更好的方法。
【问题讨论】:
-
你能告诉我们你想要做什么或想要的输出是什么吗?
-
我想要的是创建一个像上面提到的对象。所以 myObj 是一个对象,其值也是对象。我从一个空对象开始,当对象进来时,我想维护他们的地图。想要的东西已经通过那个 if 语句实现了。但我不喜欢这种方式,而是想看看我是否可以更优雅地做同样的事情。
标签: ecmascript-6 ecmascript-next