Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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/5/spring-mvc/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_Arrays_Object_Ecmascript 6_Destructuring - Fatal编程技术网

Javascript 是否可以通过分解结构从数组创建对象?

Javascript 是否可以通过分解结构从数组创建对象?,javascript,arrays,object,ecmascript-6,destructuring,Javascript,Arrays,Object,Ecmascript 6,Destructuring,是否可以这样做: const foo = [1, 2]; const bar = { a: foo[0], b: foo[1], c: 'something else not in array' }; 作为一条语句,避免声明foo 例如,数组可能是 "1, 2".split(', ') 您希望避免临时变量声明,使用“1”和“2”作为新对象中两个属性(可能不是唯一属性)的值 我可以想象这样的情况,尽管出于各种原因,两者都不成立: const bar { a, b, c:

是否可以这样做:

const foo = [1, 2];
const bar = {
    a: foo[0],
    b: foo[1],
    c: 'something else not in array'
};
作为一条语句,避免声明
foo

例如,数组可能是

"1, 2".split(', ')
您希望避免临时变量声明,使用
“1”
“2”
作为新对象中两个属性(可能不是唯一属性)的值

我可以想象这样的情况,尽管出于各种原因,两者都不成立:

const bar { a, b, c: 'something else not in array' } = [1, 2];

编辑: 我找到的最接近的,不使用生命的,是

Object.assign({c: 'something else not in array'}, [1, 2])
其中有一个负数,即不是名为“a”和“b”的属性,而是名为“0”和“1”的属性:

{0: 1, 1: 2, c: "something else not in array"}
是的,使用iLife:

 const bar = (([a, b]) => ({ a, b, c: "other props" }))([1, 2]);

如果它只涉及两个属性/值,则
reduce
也可以工作:

const bar = [1, 2].reduce((a, b) => ({ a, b, c: "other"}));

您可以将几乎任何内容压缩到一行中,但这不会使其可读。如果您不想创建中间变量,那么没有特殊的语法糖,最好的方法是迭代与数组值关联的键名数组,这就是为什么我说“避免声明foo”。你可以做[a,b]=[b,a],但我想知道c{a,b}=[a,b]。你必须定义
a
b
类似的地方:
const[a,b]=“1,2”。split(',');const bar={a,b,c:“something other”}
如果您对键名不太在意,
{…array,c:“something other”}
会创建数字键是的,我想知道我们现在是否可以在其他地方进行定义。后者可能部分存在。。。我知道我们可以在对对象使用解构时重命名参数,但解构数组的[0]、[1]等是否也可以重命名?名称a和b是固定的,还是动态确定的?
const bar = [1, 2].reduce((a, b) => ({ a, b, c: "other"}));