javascript - 如何在函数定义中一起使用剩余和扩展运算符?

标签 javascript ecmascript-6 ecmascript-next

我有以下内容:

const a = (...args) =>{ return {...args}}
const abc = a('lol', 'rofl', 'lmao');
console.log('abc', abc);

但是,这会打印出来

Object {0: "lol", 1: "rofl", 2: "lmao"}

但我预料到了

Object {lol: "lol", rofl: "rofl", lmao: "lmao"}

自从

{lol, rofl, lmao}

产生上面的行。

有没有办法传播论点以便我得到这个结果?

最佳答案

我认为没有任何内置方法可以做到这一点, spread syntax不会按您的预期工作。无论如何,你可以使用 Array#reduce方法。

const a = (...args) => args.reduce((obj, v) => (obj[v] = v, obj), {})
const abc = a('lol', 'rofl', 'lmao');
console.log('abc', abc);

关于javascript - 如何在函数定义中一起使用剩余和扩展运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42837612/

相关文章:

javascript - 应该如何在 React 类中编写函数?

javascript - 如何检查变量是否是生成器函数? (例如函数*产量)

javascript - 比较对象时使用原生 JavaScript 方式遍历文档树

javascript - IE 上的 window.open 错误?

javascript - 处理隐藏元素

javascript - requirejs jquery 多个依赖的非模块 jquery 插件,如 jquery-ui 和 jqGrid

javascript - 如何在 AVA 上使用 @decorator (redux-connect) 测试组件 undecorator?

javascript - 从 JavaScript 中的类实例动态继承

JavaScript - Object.assign 到 Spread 运算符

javascript - 如何通过javascript设置html属性值?