Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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/2/ionic-framework/2.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_Node.js_Javascript Objects - Fatal编程技术网

Javascript 将键数组转换为键值对对象

Javascript 将键数组转换为键值对对象,javascript,node.js,javascript-objects,Javascript,Node.js,Javascript Objects,我知道如何转换: const keys = [1, 2, 3]; 为此: [{key: 1, val: "q"}, {key: 2, val: "w"}, {key: 3, val: "e"}] 使用单个映射语句: keys.map((x, i) => ({key: x, val: "qwe".charAt(i)})); 但我真的想得到这个: {1: "q", 2: "w", 3: "e"} 有没有一种简洁的方法可以在一个类似于上面的语句中实现这一点?Ahhh,明白了: const

我知道如何转换:

const keys = [1, 2, 3];
为此:

[{key: 1, val: "q"}, {key: 2, val: "w"}, {key: 3, val: "e"}]
使用单个映射语句:

keys.map((x, i) => ({key: x, val: "qwe".charAt(i)}));
但我真的想得到这个:

{1: "q", 2: "w", 3: "e"}
有没有一种简洁的方法可以在一个类似于上面的语句中实现这一点?

Ahhh,明白了:

const objects = Object.assign({}, ...keys.map((x, i) => ({[x]: "qwe".charAt(i)})));
尽管我很高兴听到其他建议以及关于这一点的任何注释…

您可以使用:


可以使用reduce和empty对象作为累加器的初始值,并在其上插入属性值对:

const key=[1,2,3];
让result=keys.reduce((obj,key,idx)=>{obj[key]='qwe'[idx];返回obj},{});
console.log(结果)
这是我的解决方案

const key=[1,2,3];
const vals=“qwe”;
const result=keys.reduce((上一个、当前、idx)=>({
…上一页,
[cur]:VAL[idx]

}), {});
[1,2,3].reduce((p,c,i)=>(p[c]=“qwe”[i],p),{}),可选:
Object.fromEntries([1,2,3]).map((e,i)=>[e,“qwe”[i]])@ASDFGerte:Hmmm。。。这比我刚找到的那件还要整洁。谢谢@ASDFGerte:是指你的第一个(原始)建议。是的,只是写一些我想到的方法。您已经显示了
Object.assign
,所以我想我们已经找到了所有常用的方法。想知道是否有一些不可行但有趣的方法。
var a=(b)=>b=10
因此
a(5)
返回10如果有人注意到你的代码不工作,你至少可以通过测试来检查,因为你会发现它实际上不工作。不要问那些对任何人都没有好处的问题。我真的没有测试过,但你的评论并不是不起作用的原因。我只是给你解释一下。我是从手机上写的,所以无法测试itAssignments是否会产生右边的值,在您的情况下,右边的值是一个字符(字符串),这将彻底打乱
reduce
的下一步。您需要返回实际的对象,正如我在评论中提到的,以及另一个答案。让我们来看看。
keys.reduce((accumulator, value, index) => { accumulator[index] = "qwe".charAt(index); return accumulator; }, {})