从这个转变最精确的方法是什么
["access","edit","delete"]
Run Code Online (Sandbox Code Playgroud)
对此
{access:true, edit:true, update:true}
Run Code Online (Sandbox Code Playgroud)
目前我循环分配对象中的每个值,但我想知道 lodash 是否已经为此提供了函数
使用reduce()。这一切都可以通过一个简单的单行代码来完成,不需要任何库:
const input = ["access","edit","delete"];
console.log(
input.reduce((obj, key) => { obj[key] = true; return obj; }, {})
);Run Code Online (Sandbox Code Playgroud)
使用新的es6 扩展语法,您甚至可以使这变得更容易:
const input = ["access","edit","delete"];
console.log(
input.reduce((obj, key) => ({...obj, [key]: true}), {})
);Run Code Online (Sandbox Code Playgroud)
洛达什
您可以将其映射到一个条目数组,然后简单地fromPairs使用lodash
_.fromPairs(input.map(k=>[k, true]))
Run Code Online (Sandbox Code Playgroud)
_.fromPairs(input.map(k=>[k, true]))
Run Code Online (Sandbox Code Playgroud)
var input = ["access","edit","delete"];
var res = _.fromPairs(input.map(k=>[k,true]));
console.log(res);Run Code Online (Sandbox Code Playgroud)
ES6
您可以将输入映射到键(您的每个输入)值(true)对象对并分配它们。
Object.assign( ...input.map(k=>({[k]: true})))
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>Run Code Online (Sandbox Code Playgroud)
如果您想要一个Map对象,您可以将输入映射到条目(如 lodash 示例中使用的)并简单地构建一个新的 Map ,例如
new Map(input.map(k=>[k, true]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2790 次 |
| 最近记录: |