取一个数组,用翻转的索引/值做一个对象
Take an array and make an object out of flipped indices/values
在
lodash 中是否有更直接的方法来实现以下目标,
var o = _.reduce([2, 3, 7], function(acc, v, i) {
acc[v] = i || "0";
return acc;
}, {});
结果
Object {2: "0", 3: 1, 7: 2}
尝试使用起始值为 empty object
的 .reduce()
,
var obj = [2, 3, 7].reduce(function(a,b,i){
return (a[b] = i, a);
}, {});
如果您希望它更短,请使用E6版本,
var obj = [2, 3, 7].reduce((a,b,i) => (a[b] = i, a), {});
一个纯粹的Javascript解决方案是
var obj = {}
[2, 3, 7].forEach(function(val, i) { obj[val] = i })
然后 Obj 是
Object {2: 0, 3: 1, 7: 2}
认为它相对简单,具有良好的可读性。它不完全相同,因为它没有返回值,而是将其保存在 obj 引用中。
既然你说你想使用 lodash
_.fromPairs(_.map(array, (elt, i) => [elt, String(i)]))
这通过将数组转换为键/值对数组来工作,然后您可以使用_.fromPairs
将其转换为对象。
我真的不推荐这个,而是使用 ES6 的单行
:Object.assign({}, ...array.map((e, i) => ({[e]: String(i)})))
这通过创建一堆小的单属性对象,然后将它们分散到Object.assign
的参数列表中,然后将它们粘合到一个对象中。
相关文章:
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- 触发具有较低Z索引值的DOM元素的事件
- 查找字符串及其索引中的最大数字
- 循环索引变量的节点 JS 丢失
- 如何在javascript中使用int变量来访问索引处的数组
- JS:创建从索引0开始的所有子字符串的最快方法
- 将事件添加到涉及for()的索引中的多个子节点
- 对对象保持索引中的值进行排序
- 推送数组中索引处的值
- 从特定索引处的JSON中检索值
- 如何在从不同索引开始的数组中循环,同时仍然在整个数组中循环
- Javascript索引字符的特定实例
- 列表框所选索引更改的原因没有启动
- 如何使用Javascript从iframe编辑索引页的innerHTML
- 删除索引后的数组值
- 如何观察聚合物元素属性值从索引.html的变化
- 是否可以在不使用索引号的情况下访问 json 数组元素
- 取一个数组,用翻转的索引/值做一个对象
- 带有PHP(未定义索引)的Youtube API V3 GET横幅图像