Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 - Fatal编程技术网

是否可以填充对象';是否直接从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.

可以从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.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编译器应该足够聪明,至少在将来能够优化这一点。这甚至可以通过巴别塔变换来实现。