是否可以填充对象';是否直接从Javascript中的数组中删除密钥?
可以从JavaScript中的数组直接填充对象的键吗 差不多是否可以填充对象';是否直接从Javascript中的数组中删除密钥?,javascript,Javascript,可以从JavaScript中的数组直接填充对象的键吗 差不多 var a = ["a", "b", "c"]; var b = {} b[a] = [1, 2, 3]; // {a:1, b:2, c:3} 换句话说,与之相反的是 Object.assign({}, ['a','b','c']); // {0:"a", 1:"b", 2:"c"} 我知道我可以通过映射和分配来完成,但可以直接执行?如果您有已知数量的属性,可以使用分解结构来完成: const b = {}; ([b.
var a = ["a", "b", "c"];
var b = {}
b[a] = [1, 2, 3];
// {a:1, b:2, c:3}
换句话说,与之相反的是
Object.assign({}, ['a','b','c']);
// {0:"a", 1:"b", 2:"c"}
我知道我可以通过映射和分配来完成,但可以直接执行?如果您有已知数量的属性,可以使用分解结构来完成:
const b = {};
([b.a, b.b, b.c] = [1, 2, 3]);
否则,您必须构建键值对,并将它们转换为对象:
const keys = ["a", "b", "c"];
const values = [1, 2, 3];
const result = Object.fromEntries(keys.map((key, i) => [key, values[i]]));
不幸的是,没有本机的Array.zip
可以简化这一点,但有些确实支持:
const result = Object.fromEntries(_.zip(keys, values));
我觉得那很好
不,
b[a]=
将始终设置b
的a
属性,否则这将非常混乱 试试看
a.reduce( (o,c,i)=>({...o,[c]:i}), {})
var a=[“a”、“b”、“c”];
var b=a.reduce((o,c,i)=>({…o[c]:i}),{})
控制台日志(b)
我想您可能是指地图功能中的键
而不是el
:)谢谢!不是直接的-但是很高兴知道没有直接的方法。在perl@a{“a”,“b”,“c”}=(1,2,3)-不一定令人困惑…@simone哦,等等,如果它们是静态的,那么这是可能的。想发布完全相同的内容。离你最近的地方。你知道v8是否能够通过spread操作符将其优化为O(n)吗?@MoritzRoessler我不知道v8有多聪明,如果不是那么聪明,那么我的解决方案很短,但不一定很快-所以问题仍然存在,你可以提供更有效的解决方案我非常喜欢你的解决方案。IMO编译器应该足够聪明,至少在将来能够优化这一点。这甚至可以通过巴别塔变换来实现。