2017-02-09 60 views
0

我想将一个对象转换为其键的数组,然后将此数组映射到其他位置。是否有Object.keys.map的简写

var a = { b:1, c:2}; 
Object.keys(a).map((key,i) => { 
    /*return some transformation of key*/ 
}) 

lodash中是否有任何函数用于执行相同操作?

Object.keys =>将其映射到一些其它转化阵列

如果我使用

_.keys(object).map((key) => { 
    /*return key transformation*/ 
}) 

这是足够快的 - 或者是有一些其他lodash函数为这个??

回答

3

Lodash的地图功能适用于此。 Lodash有时会因为成为一个大型图书馆而受到不好的代表,但是您只能使用此https://www.npmjs.com/package/lodash.map下载地图功能。

一旦你拥有了它,它的工作原理是这样的:

import map from 'lodash.map'; 
const a = { b:1, c:2 }; 
map(a, (val, key) => { 
    /*return some transformation of key and/or val*/ 
}) 

希望这有助于:)

+0

真棒谢谢它的工作原理:我做了 从'lodash'导入{map} – Prabhas

+0

太棒了!是的,这也适用,我经常听到人们抱怨由于尺寸太大而需要安装Lodash,所以我想我会把它扔到那里哈哈。 – mparis

0

这是真的容易使用纯JavaScript来实现:

const map = Object.prototype.map = function (func, object) { 
 
    const iterate = object || this 
 
    const keys = Object.keys(iterate) 
 
    const obj = {} 
 
    for (let i = 0; i < keys.length; i++) { 
 
     const key = keys[i] 
 
     obj[key] = func(key, iterate[key]) 
 
    } 
 
    return obj 
 
} 
 

 
const aObject = { a: 1 } 
 

 
console.log(JSON.stringify(aObject.map((key, value) => value + 6))) 
 
console.log(JSON.stringify(map((key, value) => value + 6, aObject)))

你可以使用它我和我ñ功能风格和面向对象:)

相关问题