我有一个数组,比如说["a","b","c"]
,我想将其转换为一个对象,该对象以数组值作为键和我可以设置的默认值。所以如果默认值是true
,我希望我的输出是{a:true, b:true, c:true}
.
下面的代码是否有更简洁的版本来实现此目的?
var myObject = {};
["a","b","c"].forEach(x => myObject[x] = true);
我觉得有一种简洁的 Lodash 或 ES6 方法可以做到这一点,但我想不到。
标准配备Object.assign https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign and Array#map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
var array = ["a", "b", "c"],
object = Object.assign(...array.map(k => ({ [k]: true })));
console.log(object);
或者用 lodash 和_.set https://lodash.com/docs/#set
var array = ["a", "b", "c"],
object = array.reduce((o, k) => _.set(o, k, true), {});
console.log(object);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)