将数组解构为对象 属性 键
Destructure array to object property keys
我有一组值,例如:
const arr = [1,2,3];
有什么方法可以使用解构来创建以下输出吗?如果没有,我在 ES6(或更高版本)中执行此操作的最简单方法是什么?
const obj = {
one: 1,
two: 2,
three: 3
};
我试过了,但我想它不起作用,因为这是计算键的语法:
const arr = [1,2,3];
const obj = {
[one, two, three] = arr
};
我不认为有任何 structuring/destructuring 解决方案可以一步完成,不。我想要类似的东西 . The old :=
strawman proposal doesn't seem to have legs in the new proposal list,所以我认为现在 activity 没有太多关于它的东西。
恕我直言, 是这里最好的 (比这个好很多)。两步,简洁明了。
但如果是两步,你也可以使用一个简单的对象初始化器:
const arr = [1,2,3];
const obj = {
one: arr[0],
two: arr[1],
three: arr[2]
};
console.log(obj);
另一种选择是用几个临时数组来做,但技术上只有一个声明(我不提倡这个,只是注意到它):
const arr = [1,2,3];
const obj = Object.fromEntries(
["one", "two", "three"].map((name, index) =>
[name, arr[index]]
)
);
console.log(obj);
您不仅可以将解构值分配给变量,还可以分配给现有对象:
const arr = [1,2,3], o = {};
({0:o.one, 1:o.two, 2:o.three} = arr);
这不需要任何额外的变量就可以工作,并且重复性较低。不过也需要两步,如果你很讲究的话。
这回答了一个略有不同的要求,但我来这里是为了寻找该需求的答案,也许这会对处于类似情况的其他人有所帮助。
给定一个字符串数组:a = ['one', 'two', 'three']
获得此结果字典的一种很好的非嵌套非循环方式是什么: b = { one : 'one', two: 'two', three: 'three' } ?
const b = a.map(a=>({ [a]: a })).reduce((p, n)=>({ ...p, ...n }),{})
通过解构,您可以创建新变量或分配给现有变量 variables/properties。但是,您不能在同一语句中声明和重新分配。
const arr = [1, 2, 3],
obj = {};
[obj.one, obj.two, obj.three] = arr;
console.log(obj);
// { one: 1, two: 2, three: 3 }
使用解构赋值可以从数组中赋值给一个对象
请试试这个例子:
const numbers = {};
[numbers.one, numbers.two, numbers.three] = [1, 2, 3]
console.log(numbers)
在左侧的“分配给任何东西”部分中感谢 http://javascript.info/ where I found a similar example. This example is located at http://javascript.info/destructuring-assignment 的男孩们
您可以使用 lodash 的 _.zipObject
轻松实现它
const obj = _.zipObject(['one','two','three'], [1, 2, 3]);
console.log(obj); // { one: 1, two: 2, three: 3 }
let distructingNames = ['alu', 'bob', 'alice', 'truce', 'truce', 'truce', 'truce', 'bob'];
let obj={};
distructingNames.forEach((ele,i)=>{
obj[i]=ele;
})
console.log('obj', obj)
最简单且代码更少的方法之一是解构数组。然后使用这样的常量来更新对象。
const arr = [1, 2, 3];
const [one, two, three] = arr;
const obj = {one, two, three};
console.log(obj);
注意我是如何通过这样写常量一、二和三的名称来给对象赋值的。当密钥的名称与 属性.
相同时,您可以这样做
//Instead of writing it like this
const obj = {one: one, two: two, three: three};
箭头风格:
const obj = (([one, two, three]) => ({one, two, three}))(arr)
我有一组值,例如:
const arr = [1,2,3];
有什么方法可以使用解构来创建以下输出吗?如果没有,我在 ES6(或更高版本)中执行此操作的最简单方法是什么?
const obj = {
one: 1,
two: 2,
three: 3
};
我试过了,但我想它不起作用,因为这是计算键的语法:
const arr = [1,2,3];
const obj = {
[one, two, three] = arr
};
我不认为有任何 structuring/destructuring 解决方案可以一步完成,不。我想要类似的东西 :=
strawman proposal doesn't seem to have legs in the new proposal list,所以我认为现在 activity 没有太多关于它的东西。
恕我直言,
但如果是两步,你也可以使用一个简单的对象初始化器:
const arr = [1,2,3];
const obj = {
one: arr[0],
two: arr[1],
three: arr[2]
};
console.log(obj);
另一种选择是用几个临时数组来做,但技术上只有一个声明(我不提倡这个,只是注意到它):
const arr = [1,2,3];
const obj = Object.fromEntries(
["one", "two", "three"].map((name, index) =>
[name, arr[index]]
)
);
console.log(obj);
您不仅可以将解构值分配给变量,还可以分配给现有对象:
const arr = [1,2,3], o = {};
({0:o.one, 1:o.two, 2:o.three} = arr);
这不需要任何额外的变量就可以工作,并且重复性较低。不过也需要两步,如果你很讲究的话。
这回答了一个略有不同的要求,但我来这里是为了寻找该需求的答案,也许这会对处于类似情况的其他人有所帮助。
给定一个字符串数组:a = ['one', 'two', 'three'] 获得此结果字典的一种很好的非嵌套非循环方式是什么: b = { one : 'one', two: 'two', three: 'three' } ?
const b = a.map(a=>({ [a]: a })).reduce((p, n)=>({ ...p, ...n }),{})
通过解构,您可以创建新变量或分配给现有变量 variables/properties。但是,您不能在同一语句中声明和重新分配。
const arr = [1, 2, 3],
obj = {};
[obj.one, obj.two, obj.three] = arr;
console.log(obj);
// { one: 1, two: 2, three: 3 }
使用解构赋值可以从数组中赋值给一个对象
请试试这个例子:
const numbers = {};
[numbers.one, numbers.two, numbers.three] = [1, 2, 3]
console.log(numbers)
在左侧的“分配给任何东西”部分中感谢 http://javascript.info/ where I found a similar example. This example is located at http://javascript.info/destructuring-assignment 的男孩们
您可以使用 lodash 的 _.zipObject
轻松实现它const obj = _.zipObject(['one','two','three'], [1, 2, 3]);
console.log(obj); // { one: 1, two: 2, three: 3 }
let distructingNames = ['alu', 'bob', 'alice', 'truce', 'truce', 'truce', 'truce', 'bob'];
let obj={};
distructingNames.forEach((ele,i)=>{
obj[i]=ele;
})
console.log('obj', obj)
最简单且代码更少的方法之一是解构数组。然后使用这样的常量来更新对象。
const arr = [1, 2, 3];
const [one, two, three] = arr;
const obj = {one, two, three};
console.log(obj);
注意我是如何通过这样写常量一、二和三的名称来给对象赋值的。当密钥的名称与 属性.
相同时,您可以这样做//Instead of writing it like this
const obj = {one: one, two: two, three: three};
箭头风格:
const obj = (([one, two, three]) => ({one, two, three}))(arr)