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',...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,{});
console.log(obj); // Expected output: { str1: 'Value',str2: 'Value' }

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

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

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...