[英]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.assign
和map
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.