是否有Object.keys.map的简写

时间:2017-02-09 19:22:21

标签: javascript object dictionary key lodash

我想将一个对象转换为其键的数组,然后将该数组映射到其他位置。

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 个答案:

答案 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;
&#13;
&#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}

更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#converting_an_object_to_a_map