我想将一个对象转换为其键的数组,然后将该数组映射到其他位置。
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函数吗?
答案 0 :(得分: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*/
})
希望这会有所帮助:)
答案 1 :(得分: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)))
&#13;
你可以在功能风格和面向对象中使用它:)
答案 2 :(得分:0)
来自带有 Object.entries
的关联数组的简单地图的单行解决方案:
const map = new Map(Object.entries(a));
// const a = {b: 1, c: 2};
// 'map' will result into => Map(2) {"b" => 1, "c" => 2}