繁体   English   中英

Javascript - 将数组解构为对象

[英]Javascript - Destructure an array into an object

有没有更好的方法将解构数组转换为 Javascript 中的对象?

我正在使用 axios API 库,当我一次执行多个查询时,我会返回一个包含 4-5 个 API responses的数组。 然后我想将它们包装成一个对象并传递给另一个函数。 也许有一个单线? 并不是说这真的很重要,但是我在整个应用程序中都有很多这样的东西。

const [foo, bar, baz] = [1, 2, 3]
const obj = {
    foo,
    bar,
    baz
}
console.log(obj)
=> {foo: 1, bar: 2, baz: 3}

Util 方法 toObj 使用Object.assignmap

 const toObj = (arr, keys) => Object.assign({}, ...keys.map((key, i) => ({ [key]: arr[i] }))); const arr = [1, 2, 3] const keys = ['foo', 'bar', 'baz']; console.log(toObj(arr, keys));

实际上,没有什么比手动声明对象和道具更短的纯香草方式了。 Lodash有一个zipObject方法可以做到这一点,例如

_.zipObject(['foo', 'bar', 'baz'], [1, 2, 3])

JavaScript内置没有任何功能可以完全满足您的要求,但是创建一个功能可以做到这一点很简单。 这是一个基于_.zipObject的_.zipObject的代码:

 function zipObject(props, values) { return props.reduce((object, prop, index) => { object[prop] = values[index]; return object; }, {}); } console.log(zipObject(['foo', 'bar', 'baz'], [1, 2, 3])); 

作为一线高尔夫球:

const zipObject = (ps, vs) => ps.reduce((o,p,i)=>(o[p]=vs[i],o),{});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM