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"}));