编程语言
首页 > 编程语言> > javascript – ES6数组解析并分配给没有函数的对象

javascript – ES6数组解析并分配给没有函数的对象

作者:互联网

我想知道如果没有地图,减少或任何其他功能,这个初步代码是否可行?

const arr1 = ['str', 'str2'];
let obj = {};
Object.assign(obj, [...arr1] : 'Value');
console.log(obj); // Expected output: { str1: 'Value', str2: 'Value' }

重点是将每个数组元素转换为一个对象键并为其分配一个静态值,引起我注意的是,是否可以通过使用简单的语法并将数组解构为与伪代码类似?由于我找不到任何关于此的信息,我只是想把这个问题清除掉.

解决方法:

您不能传播数组元素以将它们用作对象中的单独属性的属性名称.

最简单的方法就是在事后使用循环:

let obj = {};
for (const str of arr1) {
    obj[str] = 'Value';
}

实例:

const arr1 = ['str', 'str2'];
let obj = {};
for (const str of arr1) {
    obj[str] = 'Value';
}
console.log(obj); // Expected output: { str1: 'Value', str2: 'Value' }

但是如果你想要“发烧友”,你可以使用Object.assign和一堆临时对象,使用扩展符号和map和箭头函数:

let obj = {};
Object.assign(obj, ...arr1.map(str => ({[str]: 'Value'})));

另请参阅Jared Smith的answer using fromEntries,它与此分配版本非常相似,但可能更高效(仍会创建大量不必要的临时对象,但更有效地处理这些对象).

实例:

const arr1 = ['str', 'str2'];
let obj = {};
Object.assign(obj, ...arr1.map(str => ({[str]: 'Value'})));
console.log(obj); // Expected output: { str1: 'Value', str2: 'Value' }

如果你想要的话,你也可以穿上它来减少它(因为几乎任何阵列操作都可以减少角度):

let obj = arr1.reduce((o, str) => {
    o[str] = 'Value';
    return o;
}, {});

实例:

const arr1 = ['str', 'str2'];
let obj = arr1.reduce((o, str) => {
    o[str] = 'Value';
    return o;
}, {});
console.log(obj); // Expected output: { str1: 'Value', str2: 'Value' }

然后也许(ab)使用逗号运算符,因此箭头函数可以使用简洁的正文:

let obj = arr1.reduce((o, str) => (o[str] = 'Value', o), {});

实例:

const arr1 = ['str', 'str2'];
let obj = arr1.reduce((o, str) => (o[str] = 'Value', o), {});
console.log(obj); // Expected output: { str1: 'Value', str2: 'Value' }

不过,我会保持简单,并使用循环.

标签:javascript,arrays,ecmascript-6,destructuring
来源: https://codeday.me/bug/20190716/1473823.html