是否可以动态设置密钥名称以扩展运营商?
例如我有:
'first, second, third'.split(',');
// Array(3) : [ 'first', 'second', 'third' ]
我希望有一个这样的对象
{ 'first': 'first', 'second': 'second', 'third': 'third' }
通过这样做,我得到:
{ ...'first, second, third'.split(',') };
// { 1: 'first', 2: 'second', 3: 'third' }
我可以动态设置它,还是我必须迭代并在此时手动执行?
我最终结合了两个答案来使用它:
const toObject = str => Object.assign(...str.split(/\s*,\s*/).map(key => ({ [key]: key })));
答案 0 :(得分:4)
您可以将键/值对列表分散到对象分配中:
Object.assign(...'first, second, third'.split(',').map(key => ({[key]: key})))
答案 1 :(得分:2)
乔纳斯的解决方案很聪明。我喜欢。这是另一种选择:
dataRow
请注意,我使用function toObject(str) {
const parts = str.split(/\s*,\s*/);
return parts.reduce((obj, part) => {
obj[part] = part;
return obj;
}, {});
}
console.log(toObject('first, second, third'));
代替split(/\s*,\s*/)
来消除部分之间的空白。
如果您涉及到这种情况,可以将其简化为以下单行:
split(',')